关于java的几种对象(PO,VO,DAO,BO,POJO,DTO)解释摘抄

关于java的几种对象(PO,VO,DAO,BO,POJO,DTO)解释摘抄_第1张图片

 

1 、VO(View Object)-- 显示层对象

图中的 VO 是 View Object,表示显示层对象。显示层对象,通常是 Web 向模板渲染引擎层传输的对象(摘自《阿里巴巴 Java 开发手册1.4.0》)。

 VO(Value Object)--值对象

还有一种 VO 是值对象。网上很多讨论这个主题的文章把用于显示层的VO 写成了Value Object,这时不对的,大家要注意。值对象在图中没有表示,这里稍微提一下。值对象是领域驱动设计 DDD 中的概念,是领域模型中的领域层元素。值对象用来表示领域中一类有意义的值,这类值不需要标识 ID,它们有意义的是值本身。 值相同的值对象就是相同的。比如面向对象书籍中常见的包含 red、green 和 blue三个属性的 Color 类,就是一种值对象,如果两个Color 对象,三个属性分别相等,那么我们就任何这两个 Color 对象是相同的。值对象通常会用作领域中实体的属性。

2.DTO

DTO(Data Transfer Object)是数据传输对象,主要用来在不同的应用层之间传输数据。 可以把 DTO 当作是没有逻辑的数据容器。DTO 这个概念最初是由Martin Fowler 在他的《企业应用架构模式》一书中定义的。

那么显示层对象(VO)和 DTO 有什么区别呢?大多数情况没有区别,都是用于传输数据的载体。但是可能存在某些场景要求显示层有特殊的要求。比如某些属性在显示层不展示、数据中用 0/1 表示的性别,在显示层需要“女/男”。由于接口一旦发布,为了保证兼容接口的客户端,就比较难以更改。出于对接口稳定性考虑,在显示层使用区别于 DTO 的显示层对象(VO),尽管大多数时候它们没有区别。

3.DO

DO(Data Object)数据对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象(摘自《阿里巴巴 Java 开发手册1.4.0》)。实际DO 可以用领域驱动设计中的领域层元素Entity 代替。Entity 不仅能包含于数据库对应的属性,还有丰富的业务逻辑。

4.DAO

DAO(Data Access Object)是一个数据访问接口,所谓数据访问,顾名思义,就是与数据库打交道,夹在业务逻辑与数据库资源中间。我们可以认为Mybatis Mapper 就是DAO。

5.PO

PO(Persistant Object)持久对象。一个 PO 的数据结构对应着库中表的结构,表中的一条记录就是一个 PO 对象。与 DO 没有什么不同。

6.POJO

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是没有逻辑的普通JavaBeans。上面提到的VO(View Object)、DTO、DO、PO 都是POJO。

关于java的几种对象(PO,VO,DAO,BO,POJO,DTO)解释摘抄_第2张图片

实例分析

  以一个实例来探讨下 POJO 的使用。假设我们有一个面试系统,数据库中存储了很多面试题,通过 web 和 API 提供服务。可能会做如下的设计:

  1. 数据表:表中的面试题包括编号、题目、选项、答案、创建时间、修改时间;
  2. PO:包括题目、选项、答案、创建时间、修改时间;
  3. VO:题目、选项、答案、上一题URL、下一题URL;
  4. DTO:编号、题目、选项、答案、上一题编号、下一题编号;
  5. DAO:数据库增删改查方法;
  6. BO:业务基本操作。

结合下面三个作者:

作者:旺财gg
链接:https://juejin.cn/post/7086488349493428254

作者:rimuli123
链接:https://juejin.cn/post/6844903907840245773

图片链接:、快速理解 POJO,VO,DO,DTO,Entity_结构化思维wz的博客-CSDN博客_do和entity

你可能感兴趣的:(学习笔记,java,开发语言)