What is the difference between DAL, DTO and DAO in a 3 tier architecture style including with MVC

后端 未结 2 1803
名媛妹妹
名媛妹妹 2021-02-01 20:06

Recently I was learning about ORM (Object Relational Mapping) and the 3 tier architecture style (presentation,business and data persistence). If I understand c

2条回答
  •  有刺的猬
    2021-02-01 20:47

    Lets start with purpose of each: -

    DTO

    Data Transfer Objects. These are generally used to transfer data from controller to client (JS). Term is also used for POCOs/POJOs by few which actually holds the data retrieved from Database.

    DAO

    Data Access Object is one of the design patterns used to implement DAL. This builds and executes queries on database and maps the result to POCO/POJO using various other patterns including 'Query Object', 'Data Mapper' etc. DAO layer could be further extended using 'Repository' pattern.

    DAL

    Data Access Layer abstracts your database activities using DAO/Repository/POCO etc. ORMs help you to build your DAL but it could be implemented without using them also.

    MVC

    Model View Control is a pattern which is used to separate view (presentation) from business logic. For MVC, it does not matter if DAL is implemented or not. If DAL is not implemented, database logic simply go into your model which is not a good approach.

    In larger applications MVC is the presentation tier only of an N-tier architecture.

    Models consume most of your business logic as stated above. In N-tier application, if business logic is entirely separated for the purpose of re-usability across applications/platforms, then Models in MVC are called anemic models. If BI need not to be re-used at that scale in your application, you can use Model to hold it. No confusion, right?

    I'd be glad if someone tell me the truth about how does it works together.

    All MV* patterns define the idea/concept only; they do not define implementation. MV* patterns mainly focus on separating view from BI. Just concentrate on this.

    Refer this answer for details about different objects holding data.

提交回复
热议问题