POJO、DTO、DAO等是Java企业级开发中常用的分层对象概念,旨在解耦数据表示、业务逻辑和数据传输。核心概念包括:POJO(普通Java对象)、PO(持久化对象/数据库映射)、DTO(数据传输对象/跨进程传输)、VO(视图对象/前端展示)、BO(业务对象/逻辑封装)、DAO(数据访问对象/操作DB)及QO(查询对象/封装查询条件)。
详细概念解析
-
POJO (Plain Ordinary Java Object)
- 概念:简单Java对象,没有遵循任何特定的Java Bean规则,不包含特定的业务逻辑或持久化逻辑。
- 作用:作为数据库映射(PO)或数据传输(DTO)的基础基础模型。
-
PO (Persistent Object)
- 概念:持久化对象,对应关系型数据库中的一条记录。
- 作用:在ORM(对象关系映射)中,PO对象的字段与数据库表结构一一对应。
-
DAO (Data Access Object)
- 概念:数据访问对象,位于业务层和数据库之间。
- 作用:封装了对数据库的增删改查(CRUD)操作。
-
DTO (Data Transfer Object)
- 概念:数据传输对象,用于服务层(Service)与Web层(Controller)或不同服务进程之间传递数据。
- 作用:减少远程调用次数,隐藏业务逻辑内部实现细节。
-
VO (View Object)
- 概念:视图对象/值对象,用于展示层(前端)的数据封装。
- 作用:将一个或多个DTO/PO封装成前端界面需要的数据结构,方便显示。
-
BO (Business Object)
- 概念:业务对象,封装了核心的业务逻辑。
- 作用:将业务逻辑从Service层解耦,通常包含多个PO属性。
-
QO (Query Object)
- 概念:查询对象,专用于定义查询条件。
- 作用:将复杂的查询参数封装成一个对象传入DAO层。
-
ENTITY (Entity Object)
-
概念:实体对象,与业务相关的领域模型。
-
作用:在领域驱动设计(DDD)中,实体拥有唯一标识符,强调业务含义。
-
常见应用流转
-
DB -> PO -> DAO -> BO (业务处理) -> DTO (向外传输) -> VO (页面显示)
-
前端 -> QO (查询条件) -> DAO -> PO -> DB
总结差异
| 对象 | 含义 | 场景 |
|---|---|---|
| PO | 持久化对象 | 数据库映射 |
| DTO | 数据传输对象 | 服务间/前后端数据传输 |
| VO | 视图对象 | 前端展示 |
| BO | 业务对象 | 业务逻辑处理 |
| DAO | 数据访问对象 | CRUD操作 |
| QO | 查询对象 | 复杂查询条件封装 |