DO、DTO、BO、AO、VO、POJO

介绍

阿里巴巴 Java 开发手册中的定义如下:

「分层领域模型」规约:

  • DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
  • 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。

简单总结一下比较多提到的「分层领域模型」:

  • DO(Data Object):数据对象,其实就是一个实体类 Entity 的对象,与数据库表一一对应。
  • DO(Domain Object):领域对象,DO 是抽象出来的业务实体,对于一般的关系数据库,DO 对应一个业务表。
    • 它与 DTO 不同,DTO 是处理数据在页面与业务层之间的流动,而 DO 像是在业务层里给用户分角色,将用户角色的权限和用户的信息封装。
  • DTO(Data Transfer Object):是表现层(前端页面)与业务层之间数据传输的介质。比如前端提交了一个表单,我们把表单数据塞到 DTO 对象,DTO 对象又作为控制器方法的入参,进一步地将数据传输到业务层,然后业务层内部又会借由 DTO 构建一个实体类 Entity,借由 Entity 实现与数据库的交互。简单来说,DTO 实现了表现层与业务层数据的流动,Entity 实现了业务层与数据库之间数据的流动。
  • BO( Business Object):业务对象。就是 Service 层的实例化呀。这个对象里会有各种业务逻辑方法,也可以调用其他业务对象。比如我要实现一个访客预约的功能,那么我会在 Controller 层开一个访客预约的方法,为了保证 Controller 层逻辑的简单性,复杂的业务逻辑会通过调用业务逻辑层的方法来实现。这里的业务逻辑层的实例化,就是一个 BO。
  • VO( View Object):视图对象,绝大部分场景与 DTO 等价。
  • POJO(Plain Ordinary Java Object):指含有 set、get、toString 方法的一般对象,不允许有业务方法,也不能携带有connection之类的方法。但有时也将 DO、DTO、VO、BO 归于 POJO 的范畴。

DAO (Data Access Object):用于实现业务层与数据库的交互。

参考

  • 阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义。
  • 浅析VO、DTO、DO、BO的概念、区别和用处。
  • 阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义。

你可能感兴趣的:(JavaEE,java,前端,数据库)