VO,BO,PO,DO,DTO,AO的区别
DTO(Data Transfer Object)数据传输对象
这个传输通常指的前后端之间的传输
1.在前端的时候:
存在形式通常是js里面的对象(也可以简单理解成json),也就是通过ajax请求的那个数据体
2.在后端的时候:
存在形式是java对象,也就是在controller里面定义的,通常在后端不需要关心怎么从json转成java对象的,这个都是由一些成熟的框架转化了,比如spring框架
这也是图片里它可以两层都占的原因。
DTO本身的一个隐含的意义是要能够完整的表达一个业务模块的输出,通常用于不同服务或服务不同分层之间的数据传输。如果两个服务不能互相独立那么之间传输的数据就不能叫DTO。
VO(View Object)表现对象
VO主要的存在形式就是js里面的对象(也可以简单理解成json),VO就是前端展示用的数据
PO(Persistant Object)持久对象
简单说PO就是数据库中的记录,一个PO的数据结构对应着库中表的结构,表中的一条记录就是一个PO对象。表示数据库中的一条记录映射成的 java 对象。PO 仅仅用于表示数据,没有任何数据操作。
BO(Business Object)业务对象
BO就是PO的组合,对多个PO对象的封装,形成一个业务逻辑。BO 包括了业务逻辑,常常封装了对 DAO、RPC 等的调用(因此除了setter和getter外还有自己的调用方法),可以进行 PO 与 VO/DTO 之间的转换。通常位于业务层,是被上层的服务层调用的。
比如PO1是交易记录,PO2是登录记录,PO3是商品浏览记录。那么BO就是人网站行为对象。除了外
AO( Application Object)应用对象
在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
POJO(Plain ordinary java object) 简单java对象
一个POJO持久化以后就是PO;直接用它传递、传递过程中就是DTO;直接用来对应表示层就是VO。
DO( Data Object)领域对象
通过DAO层向上传输数据源对象,就是从现实世界中抽象出来的有形或无形的业务实体。一般和数据中的表结构对应
DTO和VO区别
通常情况下字段基本一致,但DTO更多是VO(一个实体类如User类)的一个拓展和补充,也可以是VO是实体类(User类)的拓展(在代码业务开发的时候)。当一张表有20个字段,即PO有20个属性。但页面展示我们只需要5个字段。客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这5个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO.
参考文章
一篇文章讲清楚VO,BO,PO,DO,DTO的区别 - 知乎 (zhihu.com)
VO,BO,PO,DO,DTO,AO的区别相关推荐
- VO BO PO DO DTO DAO POJO概念及区别
VO BO PO DO DTO DAO POJO 概念及区别 1.VO( value object) 即值对象 VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看 ...
- 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 ...
- 转贴一个关于DTO DAO VO BO PO POJO的^_^
DTO DAO VO BO PO POJO- - potian 写道: 辨别一些名词: 1.VO:实际上很模糊,通常指ValueObject和ViewObject 2. ViewObject,界面展现 ...
- vo、po、dto、bo、pojo、entity、mode如何区分
Java Bean:一种可重用组件,即"一次编写,任何地方执行,任何地方重用".满足三个条件 类必须是具体的和公共的 具有无参构造器 提供一致性设计模式的公共方法将内部域或暴露成员 ...
- java web分层和层间数据传递 vo bo po (转载)
还记得97年左右开始的胖客户机和瘦客户机之争吗?之后又是CS和BS之争,然后又是两层和多层之争...,十年之后的今天我们再回过头看这些争论,一切似乎看起来都那么理所应当:程序怎么能不分层啊?可是再想一 ...
- java web分层和层间数据传递 vo bo po
还记得97年左右开始的胖客户机和瘦客户机之争吗?之后又是CS和BS之争,然后又是两层和多层之争...,十年之后的今天我们再回过头看这些争论,一切似乎看起来都那么理所应当:程序怎么能不分层啊?可是再想一 ...
- entity、bo、vo、po、dto、pojo如何理解及相互转化
先介绍一下我们经常会用到的一些对象:entity.POJO.VO.DTO.BO和PO. 概念: Entity 最常用实体类,基本和数据表一一对应,一个实体一张表. Bo(business object ...
- bo JAVA是什么意思_entity、bo、vo、po、dto、pojo如何理解和区分?
Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...
- 【转】entity、bo、vo、po、dto、pojo如何理解和区分?
Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...
- entity、bo、vo、po、dto、pojo如何理解和区分?
Entity 最常用实体类,基本和数据表一一对应,一个实体一张表. Bo(business object) 代表业务对象的意思,Bo就是把业务逻辑封装为一个对象(注意是逻辑,业务逻辑),这个对象可以包 ...
最新文章
- MYSQL使用存储过程插入中文数据的疑似bug(UTF8)
- 在SIFT和SURF之后,有哪些比较新的且具有一定影响力的自然图像配准算法?
- Hadoop二次开发项目案例方案汇总
- cuda笔记-流的使用(定义、创建、消耗、同步)
- ubuntu下链接open***
- 【Java】程序调试
- Module not found: Error: Can't resolve 'XXX' in 'XXXX'
- Java中,什么是最终类与最终方法?它们的作用是什么?
- Arch + i3wm + i3lock-wrapper 毛玻璃锁屏
- VS2013 IDE C#生成CodeMap
- [深度学习] 什么是marginalization
- 【力扣精选】3分钟拿下反转链表所有题型
- locust 性能测试工具(V2.8.6)
- Redis知识总结(四万字)
- 【原创】北京智能云分院招商项目之五:智能
- 数据库的表、字段、字段的值的相关操作
- win7 桌面图标显示不正常
- Base64加密算法原理、具体例子及Java代码
- 适合中国程序员的保命教材—— 程序员羊皮卷 书评 7
- 在配置Intel realsense (D435i)时遇到的问题
热门文章
- “低代码”将干掉70%的软件开发工作
- 考研数二第十四讲 牛顿-莱布尼茨公式与用定义法求解定积分
- 2018.10.09 ZYH的斐波那契数列(线段树+矩阵快速幂)
- 欢迎大家加入Linux Mobile Research圈子
- matlab制作打地鼠游戏,Python制作打地鼠小游戏
- STC8H1K08 TSSOP20 - UART1 - Mode 1 - 使用 T2 做为波特率发生器
- easydict库的用法以及改进型Easydict
- 解决方案|AttributeError: (module ‘scipy.sparse‘ has no attribute ‘coo_array‘)
- 2019计算机导论课本样式,美英桥word课本网
- Spark SQL之RDD, DataFrame, DataSet详细使用