分层领域模型规约
:
DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象.
PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,则数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性.
DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象.
BO(Business Object):业务对象, 由Service层输出的封装业务逻辑的对象.
AO(Application Object):应用对象,在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高.
VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象.
POJO(Plain Ordinary Java Object):POJO专指只有setter/getter/toString的简单类,包括DO/DTO/BO/VO等.
Query:数据查询对象,各层接收上层的查询请求.注意超过2个参数的查询封装,禁止使用Map类来传输.
领域模型命名规约
:
数据对象:xxxDO,xxx即为数据表名。
数据传输对象:xxxDTO,xxx为业务领域相关的名称。
展示对象:xxxVO,xxx一般为网页名称。
POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO
模型之间
:
- 用户发出请求(可能是填写表单),表单的数据在展示层被匹配为VO.
- 展示层把VO转换为服务层对应方法所要求的DTO,传送给服务层.
- 服务层首先根据DTO的数据构造(或重建)一个DO,调用DO的业务方法完成具体业务.
- 服务层把DO转换为持久层对应的PO(可以使用ORM工具,也可以不用),调用持久层的持久化方法,把PO传递给它,完成持久化操作.
- 对于一个逆向操作,如读取数据,也是用类似的方式转换和传递,此处略.
关系图
: