详述 PO VO BO DTO DAO 和 POJO 的概念及区别

简介: 详述 PO VO BO DTO DAO 和 POJO 的概念及区别

说实话,我相信对于刚接触 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 个对应的属性。


相关文章
|
7月前
|
设计模式 开发框架 前端开发
项目开发中,真的有必要定义VO,BO,PO,DO,DTO这些吗?
存在即是合理的,业务复杂,人员协同性要求高的场景下,这些规范性的东西不按着来虽然不会出错,程序照样跑,但是遵守规范会让程序更具扩展性和可读性,都是前辈血淋淋的宝贵经验,为什么不用?
|
前端开发 数据库 微服务
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
1426 0
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
|
1月前
|
设计模式 开发框架 前端开发
VO、PO、DTO的区别
VO、PO、DTO的区别
32 3
|
Java 数据库
POJO、PO、DTO、DAO、BO、VO需要搞清楚的概念
POJO 全称为:Plain Ordinary Java Object,即简单普通的java对象。一般用在数据层映射到数据库表的类,类的属性与表字段一一对应。 PO 全称为:Persistant Object,即持久化对象。
30860 1
|
1月前
|
前端开发 Java 数据库连接
PO、VO、DAO、BO、DTO、POJO之间的差异与联系
PO、VO、DAO、BO、DTO、POJO之间的差异与联系
95 0
|
10月前
|
设计模式 前端开发 Java
Java开发中PO、VO、DAO、BO、DTO、POJO 含义
可以看成是与数据库中的表相映射的java对象。使用 Mybatis 来生成 PO 是不错的选择。
223 0
|
设计模式 消息中间件 开发框架
别乱分层,PO、VO、DAO、BO、DTO、POJO 到底应该用在哪里,你知道吗?
别乱分层,PO、VO、DAO、BO、DTO、POJO 到底应该用在哪里,你知道吗?
|
设计模式 消息中间件 开发框架
PO、VO、DAO、BO、DTO、POJO 能分清吗?
PO、VO、DAO、BO、DTO、POJO 能分清吗?
|
存储 前端开发 NoSQL
项目中的 DO、DTO、BO、VO、POJO的区别是什么
项目中的 DO、DTO、BO、VO、POJO的区别是什么?
|
开发框架 Java 数据库
JavaWeb - PO、BO、VO、DTO、POJO、DAO 概念 & 作用(附:转换图)
JavaWeb - PO、BO、VO、DTO、POJO、DAO 概念 & 作用(附:转换图)
472 0
JavaWeb - PO、BO、VO、DTO、POJO、DAO 概念 & 作用(附:转换图)