Difference between Entity and DTO

后端 未结 2 1908
情歌与酒
情歌与酒 2020-12-12 20:36

What is the difference between a DTO and an Entity? In details these are my questions:

  1. What fields should the DTOs have? For example my entity classes are:<

相关标签:
2条回答
  • 2020-12-12 21:30

    Difference between DTO & Entity:

    Entity is class mapped to table. Dto is class mapped to "view" layer mostly. What needed to store is entity & which needed to 'show' on web page is DTO.

    Example : If I want to store employee model as follows : Take employee as an example, I need to store gender either male/female/other. But on JSP I need to show all three values as form 'options' so user can select one.

    @Entity
    public class Employee{
    //annotate with @Id and others
    
    private Long id;
    private String name;
    private Gender gender; //this is enum viz Male,female
    }
    //Now extend Dto with employee
    
    public EmployeeDto extends Employee{
    Gender[] genders=Gender.values(); //put all gender types in array.
    }
    

    while rendering jsp we can give

    <select name="gender"> //pointed towards entity gender field.
      <option value="Male">Male</option>
      <option value="Female">Female</option>
      <option value="Other">Other</option>
    </select>
    

    then in spring or some other framework whichever selected will be opted as gender in entity.This is made possible because Dto had all three values of gender in it. Similarly, as per situation things follows. As mostly we need most of entity fields on jsp we extend dto by entity.

    0 讨论(0)
  • 2020-12-12 21:33

    Short answer:

    • Entities may be part of a business domain. Thus, they can implement behavior and be applied to different use cases within the domain.

    • DTOs are used only to transfer data from one process or context to another. As such, they are without behavior - except for very basic and usually standardised storage and retrieval functions.

    Long answer:

    While the term "Data Transfer Object" (DTO) is defined quite unambiguously, the term "Entity" is interpreted differently in various contexts.

    The most relevant interpretations of the term "Entity", in my opinion, are the following three:

    1. In the context of enterprise java and jpa:
      "An object that represents persistent data maintained in a database."

    2. In the context of "domain-driven-design" (by Eric Evans):
      "An object defined primarily by its identity, rather than its attributes."

    3. In the context of "clean architecture" (by Robert C. Martin):
      "An object that encapsulates enterprise-wide critical business rules."

    The Jee- and Jpa-community sees entities primarily as objects mapped to a database table. This point of view is very close to the definition of a DTO - and that's where much of the confusion probably stems from.

    In the context of domain-driven-design, as well as Robert Martins point of view, however, Entities are part of a business domain and thus can and should implement behavior.

    0 讨论(0)
提交回复
热议问题