Java Object 的划分

PO 持久对象

PO (Persistant Object) - 持久对象,就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合表示。PO 中应该不包含任何对数据库的操作。Entity (实体) 就是典型的 PO 对象。

DO 领域对象

DO (Domain Object) - 领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

TO 数据传输对象

TO (Transfer Object) - 数据传输对象,在不同的应用程序之间传输的对象。

DTO 数据传输对象

DTO (Data Transfer Object) - 数据传输对象。这个概念来源于 J2EE 的设计模式,原来的目的是为 EJB 的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载。但在这里,泛指用于视图层与服务层之间的数据传输对象。

VO 值对象

VO (Value Object) - 值对象。通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和数据库表对应,也可以不对应,这取决于实际的业务需求。用 new 关键字创建,由 GC 负责回收。VO 也可以用作 View Object (视图对象),接收前端页面传递过来的数据并封装成对象;或者将业务处理完的结果,封装成前端页面要用的数据。

BO 业务对象

BO (Business Object) - 业务对象。从业务模型的角度看,见 UML 元件领域模型中的领域对象。BO 是封装业务逻辑的 Java 对象,通过调用 DAO 方法,结合 PO 与 VO 进行业务操作。BO 业务对象的主要作用是把业务逻辑封装为一个对象,这个对象可以包括一个或多个其它的对象。比如一份简历,有教育经历、工作经历、社会关系等等。一般可以把教育经历对应一个 PO,工作经历对应一个 PO,社会关系对应一个 PO。建立一个对应简历的 BO 对象来处理简历,每个 BO 都包含这些 PO。这样处理业务逻辑时,就可以针对 BO 去处理。

POJO 简单 Java 对象

POJO (Plain Ordinary Java Object) - 简单无规则的 Java 对象。POJO 是传统意义上的 Java 对象。在一些 ORM 框架中,属于能够做到维护数据库表记录的 Persisent Object,完全是一个符合 Java Bean 规范的纯 Java 对象,没有增加别的属性和方法。POJO 可以理解为最基本的 Java Bean,只有属性字段及 settergetter 方法。POJO 是 BO/DO/VO/DTO 的统称。

DAO 数据访问对象

DAO (Data Access Object) - 数据访问对象。在 Sun 公司的一个标准 J2EE 设计模式中,有个接口就叫 DAO,它负责持久层的操作,同时可以为业务层提供接口。DAO 对象用于访问数据库,包含了各种数据库的操作方法,通常和 PO 一起使用。通过 DAO 的方法,结合 PO 对数据库进行相关的操作,夹在业务逻辑与数据库资源中间。可以配合 VO,提供数据库的 CRUD 操作。