锁定老帖子 主题:究竟什么是POJO?(转载)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (14) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-16
POJO
(
Plain Old Java Object
)这种叫法
是
Martin Fowler
、
Rebecca Parsons
和
Josh MacKenzie
在
2000
年的一次演讲的时候提出来的。
package com.tongking.spring; public class DbHello implements Hello { private DictionaryDAO dao; public void setDao(DictionaryDAO dao) { this.dao = dao; } } 基本的意思是我们要给具有业务逻辑处理的规则的Java对象( regular java objects)起了一个名字——POJO,这些Java对象不是EntityBeans(EJB的一种)。 我又在http://www.webopedia.com/TERM/P/POJO.htm查到解释如下: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-16
感觉类完全不和外部框架契合的情况是很少见的
我可否认为,在提到POJO这一概念时,是相对而言的,如在描述某框架时,提到POJO是指没有为此框架提供特殊接口的业务对象 |
|
返回顶楼 | |
发表时间:2011-02-16
POJO Plain Old Java Object是相对于被容器管理的ejb来说的概念,按字面意思就是普通的旧式的java对象。在提出这个概念的那个时代,ejb还是比较流行的,但是ejb开发起来非常不方便,要求类实现特殊的接口,按照奇怪的方式定义方法,并通过奇怪的方式调用它,运行时ejb的生命周期也相当复杂。也许在当时ejb是不普通的新式的java对象,相对的,人们就起了个pojo这个名字来称呼那些不像ejb那样的普通的老式的对象。现在连ejb3也pojo了,非pojo的东西倒是少见了,没有对比,pojo也没有那么显眼了。
|
|
返回顶楼 | |
发表时间:2011-02-17
只是个相对概念,不了解jee历史的人当然不会理解,如ls所言,当时ejb刚出来,一个对象承载了,事务,等各种借口功能,用户苦不堪言,所以才有了返璞归真这类pojo,仅此而已
|
|
返回顶楼 | |
发表时间:2011-02-17
kjj 写道 只是个相对概念,不了解jee历史的人当然不会理解,如ls所言,当时ejb刚出来,一个对象承载了,事务,等各种借口功能,用户苦不堪言,所以才有了返璞归真这类pojo,仅此而已
正解 |
|
返回顶楼 | |
发表时间:2011-02-17
tianhandigeng 写道
最后,我们总结一下给一个定义把,POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
pojo一般没有业务逻辑处理和持久化处理。 pojo有了业务逻辑处理通常称为Domain Model(域模型) pojo有了持久化处理通常称为PO(Persistant Object持久化对象)
|
|
返回顶楼 | |
发表时间:2011-02-17
kjj 写道 只是个相对概念,不了解jee历史的人当然不会理解,如ls所言,当时ejb刚出来,一个对象承载了,事务,等各种借口功能,用户苦不堪言,所以才有了返璞归真这类pojo,仅此而已
|
|
返回顶楼 | |
发表时间:2011-02-17
piabo2161978 写道
tianhandigeng 写道
最后,我们总结一下给一个定义把,POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
pojo一般没有业务逻辑处理和持久化处理。 pojo有了业务逻辑处理通常称为Domain Model(域模型) pojo有了持久化处理通常称为PO(Persistant Object持久化对象)
pojo和领域模型,持久化对象之间没有什么关生系吧?pojo可以是领域模型,也可以不是领域模型,可以是持久化对象也可以不是持久化对象;同样的,领域模型可以是pojo,也可以不是pojo(比如是ejb),持久对象可以是pojo,也可以不是pojo(比如ejb2的 Entity Bean)。不仅如此,pojo有了业务逻辑处理,不一定就是domain model,因为可能你的项目根本就没有使用DDD;pojo有了持久化处理也不一定就是PO,因为你的程序中可能根本就没有把对象存储入数据库的概念,持久化处理只是做做普通的SQL而已。反正这三个概念没什么必然的关系。 |
|
返回顶楼 | |
发表时间:2011-02-17
pojo 例如 你写的一个没继承别的类的javaBean
|
|
返回顶楼 | |
发表时间:2011-02-17
在Spring3 MVC里总是提倡将Controler不实现任何接口,而是写成POJO,然后加上注解,楼主觉得这样算不算是POJO呢?
|
|
返回顶楼 | |