目录

VO (View object) 视图对象

DTO (data transfer object) 数据传输对象

VO和DTO的区别

PO(persistent object)持久对象

Entity 实体类

BO(Business Object) 业务对象

DO (Domain Object) 领域对象

pojo( plain ordinary java object​​​)简单无规则java对象


先看业务图,了解一下

  • 用户提交请求(可能是填写表单),表单的数据在展示层被匹配为 VO。
  • 服务层把 VO 转换为服务层对应方法所要求的 DTO,传送给服务层。
  • 服务层首先根据 DTO 的数据构造一个 DO (或重建),调用 DO 的业务方法完成具体业务。
  • 服务层把 DO 转换为持久层对应的 PO(一般使用 ORM 工具),调用持久层的持久化方法,把 PO 传递给它,完成持久化操作。

对于一个逆向操作,如读取数据,也是用类似的方式转换和传递。

VO (View object) 视图对象

VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看到的,这就叫VO, VO主要的存在形式就是js里面的对象(也可以简单理解成json)

DTO (data transfer object) 数据传输对象

dto一般是一个业务流程后产生的数据对象,返回给业务调用方,在多团队协作中,团队之间用微服务相互调用,这个时候接口返回给别的团队java接口的数据对象就是dto,而给http前端用的对象是vo。

VO和DTO的区别

主要有两个区别:
                一个是字段不一样,VO根据需要会删减一些字段
                另一个是值不一样,VO会根据需要对DTO中的值进行展示业务的解释

举个简单的例子 DTO可能是这样的

{"gender":"1", "age":35
}

对于业务一来说只需要性别,而且因为是一个古风聊天室,也不能直接展示1,因此经过业务解释业务一的VO是

{ "gender":"男"
} 

PO(persistent object)持久对象

代表持久层对象的意思,对应数据库中表的字段,数据库表中的记录在java对象中的显示状态,最形象的理解就是一个PO就是数据库中的一条记录。

Entity 实体类

常用实体类,基本和数据表一一对应,一个实体一张表。

通常PO里面除了get,set之外没有别的方法
对于PO来说,数量是相对固定的,一定不会超过数据库表的数量,等同于Entity,这俩概念是一致的。

BO(Business Object) 业务对象

BO就是PO的组合,简单的例子比如说PO是一条交易记录,BO是一个人全部的交易记录集合对象。

复杂点儿的例子PO1是交易记录,PO2是登录记录,PO3是商品浏览记录,PO4是添加购物车记录,PO5是搜索记录,BO是个人网站行为对象。

DO (Domain Object) 领域对象

DO(Domain Object)这个等同于上面的BO

pojo( plain ordinary java object​​​简单无规则java对象

纯的传统意义的java对象,最基本的Java Bean只有属性加上属性的get和set方法。
    可以转化为PO、DTO、VO;比如POJO在传输过程中就是DTO。

系统和系统的复杂度不同,协作水平不同,完全没有必要教条主义,这些概念全上
上哪些概念,省哪些,我给一些实际建议
1,PO这个没法省,不管叫PO还是Entity,怎么着都得有
2,一些工具类的系统和一些业务不是很复杂的系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行
3,VO是可以第一个优化掉的,展示业务不复杂的可以压根儿不要,直接用DTO

VO,BO,PO,DO,DTO,POJO的区别相关推荐

  1. VO BO PO DO DTO DAO POJO概念及区别

    VO BO PO DO DTO DAO POJO 概念及区别 1.VO( value object) 即值对象 VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看 ...

  2. 转贴一个关于DTO DAO VO BO PO POJO的^_^

    DTO DAO VO BO PO POJO- - potian 写道: 辨别一些名词: 1.VO:实际上很模糊,通常指ValueObject和ViewObject 2. ViewObject,界面展现 ...

  3. POJO/DTO/DO/EO/VO/BO/PO/AO的含义和使用

    关于POJO/DTO/DO/EO/VO/BO/PO/AO 本文讨论 POJO/DTO/DO/EO/VO/BO/PO/AO 的定义,另外讨论了这些xO在controller.service.dao/ma ...

  4. vo、po、dto、bo、pojo、entity、mode如何区分

    Java Bean:一种可重用组件,即"一次编写,任何地方执行,任何地方重用".满足三个条件 类必须是具体的和公共的 具有无参构造器 提供一致性设计模式的公共方法将内部域或暴露成员 ...

  5. java web分层和层间数据传递 vo bo po (转载)

    还记得97年左右开始的胖客户机和瘦客户机之争吗?之后又是CS和BS之争,然后又是两层和多层之争...,十年之后的今天我们再回过头看这些争论,一切似乎看起来都那么理所应当:程序怎么能不分层啊?可是再想一 ...

  6. java web分层和层间数据传递 vo bo po

    还记得97年左右开始的胖客户机和瘦客户机之争吗?之后又是CS和BS之争,然后又是两层和多层之争...,十年之后的今天我们再回过头看这些争论,一切似乎看起来都那么理所应当:程序怎么能不分层啊?可是再想一 ...

  7. entity、bo、vo、po、dto、pojo如何理解及相互转化

    先介绍一下我们经常会用到的一些对象:entity.POJO.VO.DTO.BO和PO. 概念: Entity 最常用实体类,基本和数据表一一对应,一个实体一张表. Bo(business object ...

  8. bo JAVA是什么意思_entity、bo、vo、po、dto、pojo如何理解和区分?

    Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...

  9. 【转】entity、bo、vo、po、dto、pojo如何理解和区分?

    Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...

  10. java中VO、PO、DTO 、DO、POJO、BO、TO

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

最新文章

  1. Web应用NLB群集
  2. 详细介绍React模态框组件react-modal
  3. php 过滤中英文以外,PHP-php过滤重复中英文字符串
  4. ROS: Ubuntu16.04安装ROS-kinetic
  5. jdbc获取结果行数_java – 如何判断从JDBC执行更改的行数
  6. linux如何建立隐藏目录,【Linux】文件与目录的默认权限与隐藏权限
  7. 京东成全国首批支持第三方商家接入数字人民币的企业
  8. python银行家算法_Linux 死锁概念与银行家算法python 实现
  9. Json学习总结(5)——阿里巴巴开源库 Fastjson详解
  10. MAX187_量程0-2.5伏电压表_软件滤波
  11. 想怎么GAN就怎么GAN,一键拯救发际线
  12. mantelhean.test r语言_Meta分析常用教程:R语言
  13. 2022年道路运输企业安全生产管理人员报名考试及道路运输企业安全生产管理人员模拟试题
  14. 计算机应用精华系统性整理
  15. 教育部计算机考研大纲,2021考研计算机大纲计算机网络部分考查内容
  16. 创维电视能用鸿蒙系统吗,鸿蒙OS系统电视怎么看直播?装了鸿蒙系统的电视可以看电视直播吗?当然可以...
  17. 关于计算机的英语谜语,英语的谜语大全及答案
  18. 睿联技术在创业板过会:收入依赖摄像机单机,计划募资11亿元
  19. android adb 命令汇总
  20. h5 实现简单的png icon 换颜色效果

热门文章

  1. Git详解与gitlab使用
  2. 学习编程先从python怎么样_为什么要先从Python学习编程
  3. 关于波斯历(奇怪的历法)
  4. 添加 pcre-devel 源_植物精油在犊牛开口料中添加效果总结(一)
  5. Fuubo微博客户端产品体验
  6. 台式计算机做软件模拟计算的配置,计算机的软件配置.doc
  7. 世界顶级的杀毒软件——比特梵德
  8. 【渝粤教育】国家开放大学2018年春季 8616-21T食品营养卫生 参考试题
  9. C++推箱子项目(带图带资料)
  10. 如何从用户态进入内核态