各种 O 对象概念
各种 O 对象
一、各类对象的含义
1.1 PO(persistant Object)、DO(Data Object)
- 与数据库表一一对应,由 DAO 层向上传输数据源对象
- 一个 DO/PO 对象对应数据库表的一条记录
- DO/PO 的每个属性都对应的数据库表的列
- 只存在于数据库连接期间,连接关闭后,DO/PO 就消失了(一般都会将其转为其他 O 对象)
1.2 DTO(Data Transfer Object)
- 数据传输对象,用于在应用程序的各个子系统/服务间传输数据
- 一般是子系统/服务之间进行数据交流的传参
- DTO 应该仅包括必要属性,用不到的不应该放它里面
1.3 BO(Business Object)
- 业务对象,封装了业务逻辑和业务数据的对象
- 与业务紧密相关,一般会包括对多个 PO 对象的处理
1.4 AO(Application Object)
- 应用对象,在 Web 层与 Service 层之间抽象的复用对象模型
- 极为贴近展示层,复用度不高
1.5 VO(View Object)
- 显示层对象,通常是 Web 向模板渲染引擎层传输的对象
- VO 一般是给有界面展示的客户端的数据
- VO 也是只包括必要属性,用不到的也不应该传
1.6 POJO(Plain Oridinary Java Object)
- 专指只有
setter/getter
的简单类 - 包括 DO/DTO/BO/VO 等
- 就是普通的 JavaBean 对象,理论上只有数据,没有逻辑处理
二、各类对象的区别
1. PO 和 BO 的区别
- PO 是简单的 Java 对象,没有业务逻辑,只有数据
- BO 是将 PO 与业务逻辑结合起来的对象,是数据与操作的结合
2. DTO 和 VO 的区别
- 把前后端看成 2 个子系统,后端传给前端的数据对象就是 VO,前端传给后端的数据对象则是 DTO
- VO 实际上属于是 DTO 的一种,只是特指传给前端界面的数据对象
- DTO 则是更广泛的定义,可代指各个独立子系统之间的数据传输对象,比如微服务之间
总结
参考
https://zhuanlan.zhihu.com/p/102389552
http://t.zoukankan.com/angel11288-p-06b95a05e8d6d042bf461cabd7532035.html