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的区别相关推荐

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

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

  2. 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 ...

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

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

  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. entity、bo、vo、po、dto、pojo如何理解和区分?

    Entity 最常用实体类,基本和数据表一一对应,一个实体一张表. Bo(business object) 代表业务对象的意思,Bo就是把业务逻辑封装为一个对象(注意是逻辑,业务逻辑),这个对象可以包 ...

最新文章

  1. MYSQL使用存储过程插入中文数据的疑似bug(UTF8)
  2. 在SIFT和SURF之后,有哪些比较新的且具有一定影响力的自然图像配准算法?
  3. Hadoop二次开发项目案例方案汇总
  4. cuda笔记-流的使用(定义、创建、消耗、同步)
  5. ubuntu下链接open***
  6. 【Java】程序调试
  7. Module not found: Error: Can't resolve 'XXX' in 'XXXX'
  8. Java中,什么是最终类与最终方法?它们的作用是什么?
  9. Arch + i3wm + i3lock-wrapper 毛玻璃锁屏
  10. VS2013 IDE C#生成CodeMap
  11. [深度学习] 什么是marginalization
  12. 【力扣精选】3分钟拿下反转链表所有题型
  13. locust 性能测试工具(V2.8.6)
  14. Redis知识总结(四万字)
  15. 【原创】北京智能云分院招商项目之五:智能
  16. 数据库的表、字段、字段的值的相关操作
  17. win7 桌面图标显示不正常
  18. Base64加密算法原理、具体例子及Java代码
  19. 适合中国程序员的保命教材—— 程序员羊皮卷 书评 7
  20. 在配置Intel realsense (D435i)时遇到的问题

热门文章

  1. “低代码”将干掉70%的软件开发工作
  2. 考研数二第十四讲 牛顿-莱布尼茨公式与用定义法求解定积分
  3. 2018.10.09 ZYH的斐波那契数列(线段树+矩阵快速幂)
  4. 欢迎大家加入Linux Mobile Research圈子
  5. matlab制作打地鼠游戏,Python制作打地鼠小游戏
  6. STC8H1K08 TSSOP20 - UART1 - Mode 1 - 使用 T2 做为波特率发生器
  7. easydict库的用法以及改进型Easydict
  8. 解决方案|AttributeError: (module ‘scipy.sparse‘ has no attribute ‘coo_array‘)
  9. 2019计算机导论课本样式,美英桥word课本网
  10. Spark SQL之RDD, DataFrame, DataSet详细使用