当前位置:网络安全 > 你能区分 PO、VO、DAO、BO、DTO 和 POJO 之间的区别吗?

你能区分 PO、VO、DAO、BO、DTO 和 POJO 之间的区别吗?

  • 发布:2023-10-06 03:29

《阿里巴巴java开发规范》领域模型介绍如下

层次领域模型规范:

  • DO(Data Object):该对象与数据库表结构一一对应,数据源对象通过DAO层向上传输。
  • DTO(Data Transfer Object):数据传输对象,由Service或Manager传出的对象。
  • BO(Business Object):业务对象,封装Service层输出的业务逻辑的对象。
  • AO(ApplicationObject):Application对象,一种介于Web层和Service层之间的抽象复用对象模型,与显示层非常接近,复用性不高。
  • VO(View Object):显示层对象,通常是Web传输给模板渲染引擎层的对象。
  • Query:数据查询对象,各层接收上层的查询请求。注意,超过2个参数的查询封装禁止使用Map类进行传输。

域模型命名约定:

  • 数据对象:xxxDO,xxx为数据表名称
  • 数据传输对象:xxxDTO,xxx为业务字段相关的名称。
  • 显示对象:xxxVO,xxx一般为网页名称。
  • POJO:DO/DTO/BO/VO 的统称。禁止命名 xxxPOJO。

PO(持久对象)持久对象

可以被认为是映射到数据库中的表的 java 对象。使用Hibernate生成PO是一个不错的选择。

VO(值对象)值对象

通常用于业务层之间的数据传输。与 PO 一样,它只包含数据。但它应该是一个抽象的业务对象,它可能与表对应,也可能不对应,这取决于业务的需要。

PO只能用在数据层,而VO则用在业务逻辑层和表示层。每层都操作自己的数据对象,减少了层与层之间的耦合度,方便以后系统的维护和扩展。

DAO(数据访问对象)数据访问对象接口

DAO是Data Access Object数据访问接口,数据访问:顾名思义,就是和数据库打交道。夹在业务逻辑和数据库资源之间。 J2EE 开发人员使用数据访问对象 (DAO) 设计模式 将底层数据访问逻辑与高层业务逻辑分开。实现 DAO 模式可以让您更加专注于编写数据访问代码。

DAO 模式是标准 J2EE 设计模式 之一。开发人员使用此模式将底层数据访问操作与上层业务逻辑分开。典型的 DAO 实现具有以下组件:

  • 一个DAO工厂类;
  • 一个DAO接口;
  • 实现DAO接口的具体类;
  • 数据传输对象(有时称为值对象),特定的DAO类包含从特定数据源访问数据的逻辑。

BO(业务对象)业务对象层

表示应用程序域内代表“事物”的所有实体类。这些实体类驻留在服务器上并利用服务类来协助履行其职责。

DTO(数据传输对象)数据传输对象

主要用于远程调用等需要传输大量对象的地方。例如,如果我们的表中有100个字段,那么对应的PO将有100个属性。但只要我们界面上显示10个字段,客户端就使用WEB服务来获取数据。无需将整个 PO 对象传递给客户端。这时候我们就可以使用一个只有这10个属性的DTO来将结果传递给客户端。这也不会暴露服务器表结构。到达客户端后,如果用这个对象来对应界面显示,此时它的身份就会转换为VO。

POJO(普通旧 Java 对象)简单 Java 对象

其实就是普通的JavaBean。 POJO名称是为了避免与EJB混淆,缩写也比较简单。有些类具有某些属性及其 getter 和 setter 方法,有时可以用作值对象或 dto(数据转换对象)。

当然,如果你有简单的操作属性也是可以的,但是不允许业务方法,不能携带connection等方法。

相关文章