PO、VO、BO、DTO 和 POJO的概念和用处
一、概念
第 1 个:DO
领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。阿里巴巴的开发手册中的定义DO( Data Object)这个等同于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.
二、模型
以下模型来描述上述随想在三层架构中的位置
三、大致的示例代码
Controller层
public List<UserVO> getUsers(UserQuery userQuery);
Service层、Manager层
// 普通的service层接口
List<UserDTO> getUsers(UserQuery userQuery);
然后在Service内部使用UserBO封装中间所需的逻辑对象
// 来自前端的请求
List<UserDTO> getUsers(UserAO userAo);
DAO层
List<UserDO> getUsers(UserQuery userQuery);
参考文献:基础名词解析(一)bo,po,do,dto的区别
PO、VO、BO、DTO通俗理解(附加代码讲解)
PO、VO、BO、DTO 和 POJO的概念和用处相关推荐
- PO VO BO DTO POJO DAO(转)
2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业的新人来说更是摸不清头脑.若与公司大牛谈技术人家出口就是PO VO BO DTO POJO DAO 等,让新人们无比仰慕大牛. 为了让新人快 ...
- JavaEE PO VO BO DTO POJO DAO 整理总结(转)
阅读目录 1.DAO[data access object]数据访问对象 2.DTO[data transfer object]数据传输对象 3.PO[persistant object]持久层对象 ...
- JavaEE PO VO BO DTO POJO DAO 整理总结
阅读目录 1.DAO[data access object]数据访问对象 2.DTO[data transfer object]数据传输对象 3.PO[persistant object]持久层对象 ...
- JSP PO VO BO DTO POJO DAO解释
PO :persistent object持久对象 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录. 2 .在hibernate持久化框架中与i ...
- java中几种常用的对象类型(po,vo,bo,dto)
PO(persistant object) 1.持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了. 2.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看 ...
- PO,BO,VO,DTO和POJO的概念区分
PO,BO,VO,DTO和POJO的概念区分 文章目录 PO,BO,VO,DTO和POJO的概念区分 POJO(plain ordinary java object) VO(View Object) ...
- Java基础 - AO BO DO PO VO DAO DTO POJO
Java基础 - AO BO DO PO VO DAO DTO POJO AO Application Object 应用对象. 在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复 ...
- java中PO、BO、VO、DTO、POJO、DAO是什么?
[前面的话] 在和技术人员的交流中,各种专业术语会出现,每次都是默默的记录下出现的术语,然后再去网上查看是什么意思.最近做项目,需要使用到DTO,然后学习一下吧. 这篇文章是关于Java DTO的,选 ...
- java po vo bo是什么以及_JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么
(一)O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据. 在O/R Mapping的世界 ...
最新文章
- aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读
- cascade inverse (2010-01-12)
- Android之Xposed框架完全使用指南
- QDoc创建帮助项目文件
- caffe学习笔记19-batchsize参数
- 字节跳动---万万没想到之聪明的编辑
- 最大隶属度原则_模糊数学笔记:六、模糊模型识别-I(最大隶属度原则)
- [转]带花树,Edmonds's matching algorithm,一般图最大匹配
- 玩转Google开源C++单元测试框架Google Test系列
- 各种initcall的执行先后顺序(module_init、postcore_initcall、arch_initcall、subsys_initcall、 fs_initcall)【转】...
- js学习之SublimeText编辑器
- JDK 8和Java 8的下载与安装
- 案例|工业物联网解决方案•生产数据可视化
- Linux电驴客户端,linux下电驴amule的安装配置
- freeotp使用教程_软件使用教程
- 输入框根据拼音首字母/中文字符联想补全
- LeetCode 287---Find the Duplicate Number
- springboot启动失败的原因及其解决方法
- 群老大——区块链社群将成为主流的生产组织
- 2018.10.19 NOIP训练 yk赚钱记(01分数规划)