PO

全称为:Persistant Object,持久化对象,与数据库结构映射的实体,数据库中的一条数据即为一个 PO 对象。

BO

全称为:Business Object,业务对象,主要作用是把业务逻辑封装成一个对象,这个对象可以包括一个或多个其它对象。
比如一个简历 BO 中有教育经历,工作经历,社会关系等多个 PO 对象。

DTO

全称为:Data Transfer Object,数据传输对象,比如一张表有 100 个字段,那么对应的 PO 就有100 个属性(大多数情况下,DTO内部的数据结构来自多个表)但 view 层只需要显示 10 个字段,没有必要把整个 PO 对象传递到 client,这时我们就可以用只有这 10 个属性的 DTO 来传输给 client,这样也不会暴露 server 端表结构,到达客户端后,如果这个对象来对应页面显示,它的身份就转为 VO。

使用场景:

  • UserDTO 不应该返回用户密码。
  • UserDTO 包含归属部门名称,而 UserPO 只有 deptId,没有部门名称。
  • 后台表有 100 个字段,但前端展示只需要 10 个字段,减少数据传输。
  • 简历 ResumeDTO 包含教育经历、工作经历、社会关系等多个表的数据。

VO

全称为:View Object,主要对应页面展示的数据对象,一般继承自 PO,可以添加 PO 中没有的字段,用来逻辑处理以及其它消息存储。

DO

全称为:Domain Object,领域对象,从现实世界中抽象出的业务实体,它不是简单的 POJO,它具有业务领域逻辑。

DAO

全称为:Data Access Object,数据访问对象,一般所说的 DAO 层,用于连接数据库与外层之间的桥梁,并持久化数据层对象。

模型

  • 用户发出请求,表单的数据层被匹配为 VO。
  • 展示层把 VO 转换为服务层对应方法锁要求的 DTO,传输给服务层。
  • 服务层首先根据 DTO 的数据构造一个 DO,调用 DO 的业务方法完成具体业务。
  • 服务层把 DO 转换为持久层对应的 PO,调用持久层持久化方法,把 PO 传递给它完成持久化操作。

DO、PO、BO、DTO、VO等概念的更多相关文章

  1. 关于各种O,DO/BO/DTO/VO/AO/PO

    阿里巴巴Java开发手册 链接:https://pan.baidu.com/s/11I9ViOrat-Bw_HA8yItXwA 密码:x5yi 2. DO/BO/DTO/VO/AO/PO PO(per ...

  2. 【转】PO/POJO/BO/DTO/VO的区别

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

  3. PO/POJO/BO/DTO/VO的区别(转)

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

  4. 阿里java开发手册中命名规约解读之DO/BO/DTO/VO/AO

    前言 在阅读<阿里巴巴Java开发手册>时,看到命名规则中有这样一条 虽然知道这些是根据Java对象的角色所分配名称的后缀,但是没有弄清楚分别是什么意思,日常开发中也没有使用到. 网上查找 ...

  5. PO BO VO DTO POJO DAO DO

    PO BO DTO VO 归在一起叫是POJO,简单java对象:DAO 是进行数据库增删改查的类,DO不确定有没有. 重点说下POJO PO 持久对象,数据: BO 业务对象,封装对象.复杂对象 , ...

  6. [转载]PO BO VO DTO POJO DAO概念及其作用

    原文链接:http://jeoff.blog.51cto.com/186264/88517/ POJO = pure old java object or plain ordinary java ob ...

  7. PO BO VO DTO POJO DAO 概念及其作用

    PO BO VO DTO POJO DAO 概念及其作用(附转换图) 博客分类: java javadaovopojobo        J2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业 ...

  8. 转:PO BO VO DTO POJO DAO概念及其作用

    J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋 ...

  9. [转]PO BO VO DTO POJO DAO概念及其作用(附转换图)

    来源:http://www.blogjava.net/vip01/archive/2013/05/25/92430.html J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候 ...

  10. PO BO VO DTO POJO DAO概念及其作用(附转换图)

    J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋 ...

随机推荐

  1. AJAX使用四步曲

    前言 AJAX这个东西还是很模糊的,下面会对AJAX这个技术进行详细讲解一些,另外,在网上商城中应用到了,使用它有四个步骤,下面详细介绍一些. 内容 定义: AJAX=异步JavaScript和XML ...

  2. 2019年GPLT L2-4 彩虹瓶 比赛题解 中国高校计算机大赛-团体程序设计天梯赛题解

    彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里. 假设彩虹瓶里要按顺序装 N 种颜色的小球(不妨将顺序就编号为 1 到 N).现 ...

  3. CocosPods 每次install pod 都卡在analyzing

    最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级Co ...

  4. ubuntu14.04 apt-get install找不到软件,更换源解决

    安装14.04后,有时使用apt-get命令安装程序,会提示找不到程序,这是因为软件源不正确,网上说的换163的.中科大的.阿里的等等,我在更新源的时候都会出错,一般是报404错误,网上也没找到好的办 ...

  5. [Shell]Shell学习笔记之for

    关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿…1. for((i=1;i<=10;i++));do e ...

  6. Kibana6.2.x 插件理解

    官方地址:https://www.elastic.co/guide/en/kibana/current/development-uiexports.html Type Purpose hacks An ...

  7. BestCoder Round #66 1001

    GTW likes math Accepts: 472      Submissions: 2140  Time Limit: 2000/1000 MS (Java/Others)  Memory L ...

  8. flink日记

    直接下载 解压, 运行 ./bin/start-cluster.sh 几个概念: 批处理: 大数据量,不要求实时. 输入源是有界的 流处理:实时要求高,通常在毫秒级, 数据量比较小,但是输入源是无界的 ...

  9. google chrome浏览器自动填充解决方案

    在chrome浏览器中,浏览器对于[1]type为password和text的.[2]带有name或者id属性的<input>标签会有自动填充表单功能,虽然会给用户记住密码带来一定的便利, ...

  10. 1.1 Rust安装

    从今天起,坚持每天学习10分钟Rust...这是一个刚兴起几年的语言,希望深入地进行学习,为什么呢,因为以下这些让人辛酸的理由..... 最开始学习的是C++,没学太懂,之后又学了C,这时还完全对计算 ...