随笔 - 119  文章 - 3173  trackbacks - 0
<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

交友莫独酒,茅台西凤游。
口干古井贡,心徜洋河流。
称多情杜康,趟无量双沟。
赞中华巍巍,无此不销愁。

常用链接

留言簿(68)

随笔分类(136)

随笔档案(122)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 522257
  • 排名 - 94

最新评论

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

    首先声明偶也不是什么高手,以下总结都是自己的体会。不对之处请您多指教。

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


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


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

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

欢迎指正。



画了个图,感觉没有完全表达出自己的意思。。。。。谁帮忙完善下,最好能体现各个O在MVC中的位置
snap20070108.jpg
posted on 2007-01-08 17:52 交口称赞 阅读(56803) 评论(17)  编辑  收藏 所属分类: java相关

FeedBack:
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2007-01-08 22:50 东方游
学习学习  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2007-01-08 23:51 lix
“最好能体现各个O在MVC中的位置 .... ”有些O是不在mvc模式中使用的。DAO是一种概念,可以通过pojo或非pojo实现  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2007-01-09 09:07 交口称赞
@lix
DAO:
data access object数据访问对象
这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2007-01-10 11:58 路易
POJO的解释中少写个J  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2007-01-10 12:21 交口称赞
@路易
多谢多谢  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2007-04-09 16:28 胡子鱼
感觉图画得不够准确,现实开发中,应该是 Bo、Vo组装pojo而不是Po。  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2007-04-20 10:42 Netmouse
persistent object  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2008-05-20 17:10 dwq
学习  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2008-09-16 19:32 cir
呵呵记下来了,不过vo的好像写的不太准吧
我新手  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2008-12-08 16:32 baosj
msn-baosj@hotmail.com
学习!  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2009-04-10 14:54 Mophi
原来VO是这个意思
刚来公司,老听别人说什么VO
我就是不懂,只知道VO是Value Object
原来VO是包含界面所有值的对象  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2009-09-03 23:43 mimi
楼主理解的不对,POJO和BO是PO的一个特例,应该这么理解。DOT不是由DAO组装的,某种程度上时PO个一个转化结果,或者是PO拿来用的一个对象。  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2012-02-07 18:47 兔乃伊
个人觉得POJO不是分层中的任何角色
POJO是指不依赖于其他框架的简单Java对象
POJO不是值对象(VO)

从分层开发的角度看
PO 和 BO其实没必要分离
BO通过接口将get set方法屏蔽掉即可

如果BO去组合PO 那程序中要花费大量的代码去装箱和拆箱  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2013-05-25 11:37 sss
ythf  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图) 2013-12-19 10:21 七月逆流
相当不错  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图)[未登录] 2014-12-31 14:50 x
@Mophi
vo既可以是value object也可以是view object  回复  更多评论
  
# re: PO BO VO DTO POJO DAO概念及其作用(附转换图)[未登录] 2016-05-12 14:48 123
楼主id满分  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: