首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

毕竟什么是POJO?(转载)

2012-11-12 
究竟什么是POJO?(转载)? POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh Mac

究竟什么是POJO?(转载)

? POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。
????? 我在做J2EE培训中发现我的很多学生问我什么是POJO,后来我在写书(《Spring2初学者实践教材》和《Spring3初学者实践教材》)的时候发现POJO这个概念无法回避。现在网上对于POJO的解释很多,但是很多都是有错误的或者不够准确。对此我一开始也是存在误区的,我原来是这样理解的:
??? ??? POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。
??? 所以下面的代码被认为是POJO了。

1 楼 mjking2005 2011-02-16   感觉类完全不和外部框架契合的情况是很少见的
我可否认为,在提到POJO这一概念时,是相对而言的,如在描述某框架时,提到POJO是指没有为此框架提供特殊接口的业务对象 2 楼 sulong 2011-02-16   POJO Plain Old Java Object是相对于被容器管理的ejb来说的概念,按字面意思就是普通的旧式的java对象。在提出这个概念的那个时代,ejb还是比较流行的,但是ejb开发起来非常不方便,要求类实现特殊的接口,按照奇怪的方式定义方法,并通过奇怪的方式调用它,运行时ejb的生命周期也相当复杂。也许在当时ejb是不普通的新式的java对象,相对的,人们就起了个pojo这个名字来称呼那些不像ejb那样的普通的老式的对象。现在连ejb3也pojo了,非pojo的东西倒是少见了,没有对比,pojo也没有那么显眼了。 3 楼 kjj 2011-02-17   只是个相对概念,不了解jee历史的人当然不会理解,如ls所言,当时ejb刚出来,一个对象承载了,事务,等各种借口功能,用户苦不堪言,所以才有了返璞归真这类pojo,仅此而已 4 楼 月落码农 2011-02-17   kjj 写道只是个相对概念,不了解jee历史的人当然不会理解,如ls所言,当时ejb刚出来,一个对象承载了,事务,等各种借口功能,用户苦不堪言,所以才有了返璞归真这类pojo,仅此而已

正解 5 楼 piabo2161978 2011-02-17   <div class="quote_title">tianhandigeng 写道</div>
<div class="quote_div">
<span style="font-size: medium;">?????? 最后,我们总结一下给一个定义把,POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。</span> </div>
<p><br><span style="font-size: small;">说成“正规”的并不合适,而应该是老式的,它是相对ejb新式的java对象而言。java对象不能分正规、非正规,一切皆为对象。</span></p>
<p>?</p>
<p><span style="font-size: small;">pojo一般没有业务逻辑处理和持久化处理。</span></p>
<p><span style="font-size: small;">pojo有了业务逻辑处理通常称为Domain Model(域模型)</span></p>
<p><span style="font-size: small;">pojo有了持久化处理通常称为PO(Persistant Object持久化对象)</span></p>
<p>?</p>
<p>?</p> 6 楼 kingsword588 2011-02-17   kjj 写道只是个相对概念,不了解jee历史的人当然不会理解,如ls所言,当时ejb刚出来,一个对象承载了,事务,等各种借口功能,用户苦不堪言,所以才有了返璞归真这类pojo,仅此而已
7 楼 sulong 2011-02-17   <div class="quote_title">piabo2161978 写道</div>
<div class="quote_div">
<div class="quote_title">tianhandigeng 写道</div>
<div class="quote_div">
<span style="font-size: medium;">?????? 最后,我们总结一下给一个定义把,POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。</span> </div>
<p><br><span style="font-size: small;">说成“正规”的并不合适,而应该是老式的,它是相对ejb新式的java对象而言。java对象不能分正规、非正规,一切皆为对象。</span></p>
<p>?</p>
<p><span style="font-size: small;">pojo一般没有业务逻辑处理和持久化处理。</span></p>
<p><span style="font-size: small;">pojo有了业务逻辑处理通常称为Domain Model(域模型)</span></p>
<p><span style="font-size: small;">pojo有了持久化处理通常称为PO(Persistant Object持久化对象)</span></p>
<p>?</p>
<p>?</p>
</div>
<p>pojo和领域模型,持久化对象之间没有什么关生系吧?pojo可以是领域模型,也可以不是领域模型,可以是持久化对象也可以不是持久化对象;同样的,领域模型可以是pojo,也可以不是pojo(比如是ejb),持久对象可以是pojo,也可以不是pojo(比如ejb2的 Entity Bean)。不仅如此,pojo有了业务逻辑处理,不一定就是domain model,因为可能你的项目根本就没有使用DDD;pojo有了持久化处理也不一定就是PO,因为你的程序中可能根本就没有把对象存储入数据库的概念,持久化处理只是做做普通的SQL而已。反正这三个概念没什么必然的关系。</p> 8 楼 qiushily2030 2011-02-17   pojo  例如 你写的一个没继承别的类的javaBean 9 楼 kongruxi 2011-02-17   在Spring3 MVC里总是提倡将Controler不实现任何接口,而是写成POJO,然后加上注解,楼主觉得这样算不算是POJO呢? 10 楼 抢街饭 2011-02-18   我觉的POJO 它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。 11 楼 ChinaHopes 2011-02-18  
这回字有四种写法

现在,Java是一门语言

现在感觉Java出了很多“红学家”

我只关心两点:

1、能解决问题不?

2、能赚钱不? 12 楼 mfkvfn 2011-02-18   “POJO是一个简单的普通的Java对象,它包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口”

POJO可以包含业务逻辑或持久逻辑。

热点排行