一、概念

第 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的概念和用处相关推荐

  1. PO VO BO DTO POJO DAO(转)

    2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业的新人来说更是摸不清头脑.若与公司大牛谈技术人家出口就是PO VO BO DTO POJO DAO 等,让新人们无比仰慕大牛. 为了让新人快 ...

  2. JavaEE PO VO BO DTO POJO DAO 整理总结(转)

    阅读目录 1.DAO[data access object]数据访问对象 2.DTO[data transfer object]数据传输对象 3.PO[persistant object]持久层对象 ...

  3. JavaEE PO VO BO DTO POJO DAO 整理总结

    阅读目录 1.DAO[data access object]数据访问对象 2.DTO[data transfer object]数据传输对象 3.PO[persistant object]持久层对象 ...

  4. JSP PO VO BO DTO POJO DAO解释

    PO :persistent object持久对象 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录. 2 .在hibernate持久化框架中与i ...

  5. java中几种常用的对象类型(po,vo,bo,dto)

    PO(persistant object) 1.持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了.   2.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看 ...

  6. PO,BO,VO,DTO和POJO的概念区分

    PO,BO,VO,DTO和POJO的概念区分 文章目录 PO,BO,VO,DTO和POJO的概念区分 POJO(plain ordinary java object) VO(View Object) ...

  7. Java基础 - AO BO DO PO VO DAO DTO POJO

    Java基础 - AO BO DO PO VO DAO DTO POJO AO Application Object 应用对象. 在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复 ...

  8. java中PO、BO、VO、DTO、POJO、DAO是什么?

    [前面的话] 在和技术人员的交流中,各种专业术语会出现,每次都是默默的记录下出现的术语,然后再去网上查看是什么意思.最近做项目,需要使用到DTO,然后学习一下吧. 这篇文章是关于Java DTO的,选 ...

  9. java po vo bo是什么以及_JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么

    (一)O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据. 在O/R Mapping的世界 ...

最新文章

  1. aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读
  2. cascade inverse (2010-01-12)
  3. Android之Xposed框架完全使用指南
  4. QDoc创建帮助项目文件
  5. caffe学习笔记19-batchsize参数
  6. 字节跳动---万万没想到之聪明的编辑
  7. 最大隶属度原则_模糊数学笔记:六、模糊模型识别-I(最大隶属度原则)
  8. [转]带花树,Edmonds's matching algorithm,一般图最大匹配
  9. 玩转Google开源C++单元测试框架Google Test系列
  10. 各种initcall的执行先后顺序(module_init、postcore_initcall、arch_initcall、subsys_initcall、 fs_initcall)【转】...
  11. js学习之SublimeText编辑器
  12. JDK 8和Java 8的下载与安装
  13. 案例|工业物联网解决方案•生产数据可视化
  14. Linux电驴客户端,linux下电驴amule的安装配置
  15. freeotp使用教程_软件使用教程
  16. 输入框根据拼音首字母/中文字符联想补全
  17. LeetCode 287---Find the Duplicate Number
  18. springboot启动失败的原因及其解决方法
  19. 群老大——区块链社群将成为主流的生产组织
  20. 2018.10.19 NOIP训练 yk赚钱记(01分数规划)

热门文章

  1. 教你写响应式框架(四)
  2. PHP-快递查询API
  3. CIMAE 2017 农业博览会开幕 北京供销大数据集团助力智慧农业 4.0
  4. 游戏制作之一 坦克的移动
  5. matlab循环读取有序文件名数据
  6. 桌面图标重复的解决办法
  7. STM32控制输出电压可控DCDC(硬件)
  8. 移动APP后端网络处理一些问题记录
  9. 幼儿园计算机网络教室工作计划,2020年幼儿园电教工作计划
  10. ThreeJs 基础入门