> For the complete documentation index, see [llms.txt](https://hanfak.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanfak.gitbook.io/workspace/general-paradigms/architecture/patterns/domain/business-data-separation.md).

# Business and Data Layers Separation

* In a layered architecture or use of orms, there can be objects which are used in both business and data layers.
  * This leads to coupling of both layers
  * The Business layer should know nothing about the data layer and it's implementation. But by combing both layers (ie use of annotations or shared objects) it will.
  * This can lead to business objects, which have business logic and database logic
    * Breaking SRP
* To solve this is to use a mapping object, ie DAO.
  * So when business logic is finished with it's behaviour, it passes the object to the data layer by using another object
* Sharing Business and Data layers can be seen as a shortcut, and removal of duplication.
  * This is useful, for simple apps ie crud
  * but when the shared objects are used all over the place this can cause problems
