Java基础:JavaWeb中的VO,DAO,PO,DTO,BO,DO解释

VO、DTO、DAO、PO、BO、DO:实际开发可能各种O的使用也没有明确的界线,有时并没有分的很表楚。
各种O的分离更多是从设计层面上来理解,即数据经过各个层并与之对应的关系称呼。
当然理解了各种O的用途,在理解一些严谨的代码和数据流程是非常方便的。

VO

**VO(View Object 或 Value Object)**:视图对象 或 值对象,主要对应界面显示的数据对象。即只封装前端需要的数据,减少传输的数据量大小和保护数据结构不外泄。

DTO

DTO(Data Transfer Object):数据传输对象,概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载。

DTO 通常用于不同服务或服务不同分层之间的数据传输。DTO 与 VO 概念相似,通常情况下字段也基本一致;但又有一些不同,主要体现在设计理念上,比如 API 服务调用使用 DTO 就可能与 VO 存在差异。

DAO

**DAO(Data Access Object)**:数据访问对象,与其它几个 O 区别最大,主要用来封装对数据库的访问,一般在持久层使用,完全封装数据库操作。

PO

**PO(Persistent Object)**:持久化对象,用于表示数据库中的一条记录映射成的 Java 对象。

它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

可以理解为 一个 PO 就是数据库表中的一条记录,是某个事务依赖的原始数据,可以方便地转化为其他对象。

DAO 与 PO 通常一起使用,持久化用 PO,查询访问用 DAO(ORM 层可以将字段映射成不同的 Java 实际属性)。

BO

**BO(Business object)**:复杂业务对象,把业务逻辑的数据封装成一个对象,简单理解就是封装多个业务对象。

一般用在多次调用DAO查询不同的表,返回的是关联的数据(DO/PO),将这些对象数据再次封装成一个对象。

如:一个求职者的信息对象包含简历,教育经历、工作经历、项目经历等。

DO

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

业务层首先根据DTO的数据构造(或重建)一个DO,调用DO的业务方法完成具体业务。

相关参考

Java基础:JavaWeb中的VO,DAO,PO,DTO,BO,DO解释

http://blog.gxitsky.com/2017/12/31/Java-jdk-1-oop-vo-dto-do-po/

作者

光星

发布于

2017-12-31

更新于

2022-06-17

许可协议

评论