Entity主要用于ORM(对象关系映射)框架中,如Hibernate、MyBatis等,以便将数据库中的数据映射为对象,方便进行业务操作。
- Entity通常与数据库表一一对应,代表业务数据的基本单元。
- 通常放在项目的model或entity包下。
DO(Data Object)是一个更广泛的概念,它指的是用于在应用程序中传输数据的对象。DO可以是Entity,也可以是其他专门用于数据传输的类。它的主要目的是在不同的层或组件之间传递数据,确保数据的完整性和一致性。
在某些场景下,Entity可能直接用作DO,特别是在简单的CRUD操作中。但在复杂的业务逻辑或前后端分离的场景中,我们可能会定义专门的DTO(Data Transfer Object)或VO(View Object)来作为数据传输的对象,以满足不同的需求。
DTO(数据传输对象):
DTO用于在Service层和Controller层之间传输数据,特别是在前后端分离的场景中。
DTO的字段通常与Entity不完全相同,它根据前端的需求进行定制。
通常放在项目的dto或model包下。
VO(视图对象):
VO主要用于视图层(如JSP、Thymeleaf等)的数据展示。
与DTO类似,但更偏向于前端展示,可能包含前端需要的额外字段或方法。
在前后端分离的场景中,VO的使用可能较少,因为前端通常直接处理DTO或JSON数据。
通常放在项目的vo或model包下。
DAO(数据访问对象):
DAO是连接业务逻辑和数据库的桥梁,负责执行数据库操作(CRUD)。
使用MyBatis、Hibernate等ORM框架实现时,每个Entity通常对应一个DAO。
通常放在项目的dao或repository包下。
Service(服务层):
Service层负责业务逻辑的实现,调用DAO层进行数据访问,并可能调用其他Service。
Controller(控制器):
Controller是MVC架构中的C(Controller),负责接收前端请求,调用Service层处理业务逻辑,并返回响应。