关于 VO\DTO\BO\PO\DAO 的定义
定义
VO
View object: 视图对象,用于展示层(facade / controller), 把前端某个页面的的展示数据封装起来(或者接收前端传入的请求参数)
DTO
Data Transfer Object: 用于展示层和服务层之间的数据传输对象。或者服务和服务之间的数据传输
数据传输对象,主要用于远程调用等需要大量传输对象的地方,比如我们有一个交易订单表,含有 25 个字段,那么其对应的 PO 就有 25 个属性,但我们的页面上只需要显示 5 个字段,因此没有必要把整个 PO 对象传递给客户端,这时我们只需把仅有 5 个属性的 DTO 把结果传递给客户端即可,而且如果用这个对象来对应界面的显示对象,那此时它的身份就转为 VO。
使用 DTO 的好处有两个,一是能避免传递过多的无用数据,提高数据的传输速度;二是能隐藏后端的表结构。常见的用法是:将请求的数据或属性组装成一个 RequestDTO,再将响应的数据或属性组装成一个 ResponseDTO.
BO
Business Object: 业务对象, 把业务逻辑封装为一个对象。
BO 的主要作用是把业务逻辑封装为一个对象,这个对象可以包括一个或多个其它的对象。
PO
Persistent Object: 持久化对象, 和持久层(如数据库)行程对应的映射关系,它是由一组属性和属性的
get
和set
方法组成,最简单的 PO 就是对应数据库中某个表中的一条记录.
PO 中应该不包含任何对数据库的操作。PO 的属性是跟数据库表的字段一一对应的,此外 PO 对象需要实现序列化接口。
DAO
Data Access Object数据访问对象 , 由于Java中万物皆对象的思想,我们将负责持久层的操作,为业务层提供接口,主要用来封装对数据库的访问,常见操作无外乎 CURD 封装为对象 DAO
可以理解为 DAO 对应一个 PO 对象, DAO 是 PO 的操作集合
DO
Domain Object: 领域对象,从现实世界抽出来的或者无形的领域实体。
如果服务不是 DDD 架构的话,一般无需该层
POJO
(Plain Ordinary Java Object)简单的 Java 对象,实际就是普通的 JavaBeans,是为了避免和 EJB(Enterprise JavaBean)混淆所创造的简称。
POJO 实质上可以理解为简单的实体类,其中有一些属性及其getter
和setter
方法的类,没有业务逻辑,也不允许有业务方法,也不能携带有connection
之类的方法。POJO 是 JavaEE 世界里面最灵活的对象,在简单系统中,如果从数据库到页面展示都是 POJO 的话,它可以是 DTO;如果从数据库中到业务处理中都是 POJO 的话,它可以是 BO;如果从数据库到整个页面的展示的话,它也可以是 VO.