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/