【杂记】DO、DTO、BO、Query、VO

零 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层的查询请求
经验分享 程序员 微信小程序 职场和发展