乐博娱乐»数据库»详述 PO VO BO DTO DAO 和 POJO 的看法及区别

详述 PO VO BO DTO DAO 和 POJO 的看法及区别

来源:维C果糖 宣布时间:2017-08-17 阅读次数:乐博

  说实话,我相信对于刚接触 PO、VO、BO、DTO、DAO 和 POJO 这些看法的同学来说,多数会有一种“这都是什么鬼?”的感受,可谓是云里雾里,不知今夕何夕!现在,就让咱们一起揭开这些 “X”O 的面纱,看看它们的庐山真面目。首先,来个图瞅瞅:

乐博

  第 1 个:DAO

  DAO(Data Access Object)数据会见工具,它是一个面向工具的数据库接口,卖力持久层的操作,为业务层提供接口,主要用来封装对数据库的会见,常见操作无外乎 CURD。我们也可以认为一个 DAO 对应一个 POJO 的工具,它位于业务逻辑与数据库资源中间,可以结合 PO 对数据库进行相关的操作。

  第 2 个:PO

  PO(Persistent Object)持久层工具,它是由一组属性和属性的get和set要领组成,最简朴的 PO 就是对应数据库中某个表中的一条纪录(也就是说,我们可以将数据库表中的一条纪录理解为一个持久层工具),多个纪录可以用 PO 的荟萃,PO 中应该不包罗任何对数据库的操作。PO 的属性是跟数据库表的字段一一对应的,此外 PO 工具需要实现序列化接口。

  第 3 个:BO

  BO(Business Object)业务层工具,是简朴的真实世界的软件抽象,通常位于中间层。BO 的主要作用是把业务逻辑封装为一个工具,这个工具可以包罗一个或多个其它的工具。举一个求职简历的例子,每份简历都包罗教育经历、项目经历等,我们可以让教育经历和项目经历划分对应一个 PO,这样在我们建树对应求职简历的 BO 工具处置惩罚简历的时候,让每个 BO 都包罗这些 PO 即可。

  第 4 个:VO

  VO(Value Object)值工具,通常用于业务层之间的数据通报,和 PO 一样也是仅仅包罗数据而已,但 VO 应该是抽象出的业务工具,可以和表对应,也可以差池应,这凭据业务的需要。 如果锅碗瓢盆划分为对应的业务工具的话,那么整个碗柜就是一个值工具。此外,VO 也可以称为页面工具,如果称为页面工具的话,那么它所代表的将是整个页面展示层的工具,也可以由需要的业务工具进行组装而来。

  第 5 个:DTO

  DTO(Data Transfer Object)数据传输工具,主要用于远程调用等需要大量传输工具的地方,好比我们有一个交易订单表,含有 25 个字段,那么其对应的 PO 就有 25 个属性,但我们的页面上只需要显示 5 个字段,因此没有须要把整个 PO 工具通报给客户端,这时我们只需把仅有 5 个属性的 DTO 把结果通报给客户端即可,而且如果用这个工具来对应界面的显示工具,那此时它的身份就转为 VO。使用 DTO 的利益有两个,一是能制止通报过多的无用数据,提高数据的传输速度;二是能隐藏后端的表结构。常见的用法是:将请求的数据或属性组装成一个 RequestDTO,再将响应的数据或属性组装成一个 ResponseDTO.

  第 6 个:POJO

  POJO(Plain Ordinary Java Object)简朴的 Java 工具,实际就是普通的 JavaBeans,是为了制止和 EJB(Enterprise JavaBean)混淆所缔造的简称。POJO 实质上可以理解为简朴的实体类,其中有一些属性及其getter和setter要领的类,没有业务逻辑,也不允许有业务要领,也不能携带有connection之类的要领。POJO 是 JavaEE 世界里面最灵活的工具,在简朴系统中,如果从数据库到页面展示都是 POJO 的话,它可以是 DTO;如果从数据库中到业务处置惩罚中都是 POJO 的话,它可以是 BO;如果从数据库到整个页面的展示的话,它也可以是 VO.


  扩展阅读:

  在实际的项目中,我们还会遇到一个常见的工具,那就是 Entity 实体工具,它对应数据库中的表,我们可以简朴的理解为一个表对应一个 Entity,同样以交易订单表 Order 为例,如果这个表有 25 个字段,那么这个 OrderEntity 工具里面也要含有 25 个对应的属性。


  参考文献:

  [1] JavaEE PO VO BO DTO POJO DAO 整理总结
  [2] 胡乱说一下我对于 BO VO PO DTO 的理解

乐博DTO | DAO