DAO:
data access object数据访问对象
这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.
主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO

PO:
persistant object持久对象
最形象的理解就是一个PO就是数据库中的一条记录。
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。

BO:
business object业务对象
主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、社会关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。

VO :
value object值对象
ViewObject表现层对象
主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。

DTO :
Data Transfer Object数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO

POJO :
plain ordinary java object 简单java对象
个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。
一个POJO持久化以后就是PO
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是VO

总结下我认为一个对象究竟是什么O要看具体环境,在不同的层、不同的应用场合,对象的身份也不一样,而且对象身份的转化也是很自然的。就像你对老婆来说就是老公,对父母来说就是子女。设计这些概念的初衷不是为了唬人而是为了更好的理解和处理各种逻辑,让大家能更好的去用面向对象的方式处理问题.

大家千万不要陷入过度设计,大可不必为了设计而设计一定要在代码中区分各个对象。一句话技术是为应用服务的。

vo bo po dao pojo dto相关推荐

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

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

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

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

  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. java web分层和层间数据传递 vo bo po (转载)

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

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

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

  6. java中各种O的含义(PO,VO,TO,QO,BO,DAO,DTO,POJO)

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

  7. java中各种O的含义(PO,DO,VO,TO,QO,BO,DAO,DTO,POJO)

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

  8. DTO DAO VO BO PO POJO区别

    1.VO:实际上很模糊,通常指ValueObject和ViewObject 2. ViewObject,界面展现需要的对象,如Struts的FormBean 3.Value Object,早期被作为V ...

  9. java web项目VO,dao,pojo,dto,bo,

    VO(Value Object) 值对象 通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已.但应是抽象出的业务对象 , 可以和表对应 , 也可以不 , 这根据业务的需要 .用 new ...

最新文章

  1. php 遍历所有的文件
  2. 研究javascript中的this
  3. 【并发编程】线程池--Executor框架
  4. This version of the rendering library is more recent than your version of IntelliJ IDEA.
  5. mysql工作实用经验_SQL SERVER实用经验技巧集 [一]_mysql
  6. Api demo源码学习(4)--App/Activity/Dialog --Activity以Dialog形式呈现
  7. 【调试手段】之valgrind在ARM上的交叉编译
  8. eclipse 代码问题总结
  9. mysql 重放binlog_【MySQL】老版本重放binlog的罕见报错
  10. 【导航仿真】基于matlab GUI PSINS导航仿真【含Matlab源码 1496期】
  11. 智能配电房综合监控系统 建设成效
  12. 电子签章系统研发总结
  13. OrCAD DSN文件无故消失解决办法
  14. 魔兽三区服务器物理位置,魔兽三区服务器
  15. [生存志] 第6节 第一篇 以史为鉴 明朝事的读后心得
  16. 拉卡拉支付——综合普惠金融科技平台
  17. 同义词,近义词,反义词收集
  18. layui个人中心html,Layui的简易入门教程
  19. 实验十一 电路布线问题
  20. win10邮件配置qq邮箱和outlook邮箱

热门文章

  1. 比赛得分java_(比赛)得分:_____
  2. 不要随便设置随机种子
  3. Windows下用命令行注销用户(包括注销其他用户)
  4. 在网易做游戏美术设计师是种什么体验?
  5. 电影院同场不同价 你愿意为“黄金座位”买单吗
  6. Linux内核如何私闯进程地址空间并修改进程内存
  7. 新增数学与人工智能学部,考数据结构!齐鲁工业大学(山东省科学院)计算机考研...
  8. matlab——灰色预测
  9. linux解压文件到一个新的文件夹下面
  10. 淘宝CDN架构全解析