零 l 引言
1、《阿里巴巴Java开发手册》关于领域模型的部分介绍如下:
分层领域模型规约:
- DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
- DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。
- BO(Business Object):业务对象,可以由 Service 层输出的封装业务逻辑的对象。
- Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类
来传输。- VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
2、此外还存在
- POJO(plain ordinary java object):最基本的 Java Bean ,只有属性字段及 setter、getter、toString等方法。
- PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。
- AO(ApplicationObject):应用对象,在Web层与Service层之间抽象的复用对象模型, 极为贴近展示层,复用度不高。
第一次看的时候有点一头雾水,所以记录下自己的理解。
一 l 理解
这里使用常用的MVC三层进行说明(标粗的为常用定义)
1、从数据库到前端
DAO层->Service层:
- 【DO】:POJO类属性与数据单表一一对应
- 【PO】:POJO类属性与数据单表不一一对应(如:有多个表的数据)
Service层->Controller层(Web层):
- 【DTO】:Service层到Controller层POJO类的统称
- 【BO】:【DTO】的子集,【PO】的组合,特指只包含需要属性的POJO类
Controller层(Web层)->前端:
- 【VO】:Controller层给到前端的POJO类
2、从前端到数据库
前端->Controller层(Web层):
- 【VO】:前端提交给Controller层的POJO类
- 【Query】:Controller层接收前端的查询请求
Controller层(Web层)->Service层:
- 【DTO】:Controller层到Service层POJO类的统称
- 【BO】:【DTO】的子集,【PO】的组合,特指只包含需要属性的POJO类
- 【Query】:Service层接收Controller层的查询请求
Service层->DAO层:
- 【DO】:POJO类属性与数据单表一一对应
- 【PO】:POJO类属性与数据单表不一一对应(如:有多个表的数据)
- 【Query】:DAO层接收Service层的查询请求