pojo和javabean的区别(总结)

时间:2022-01-24 19:06:06

POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。
在http://www.webopedia.com/TERM/P/POJO.htm查到解释如下:
POJO, or Plain Old Java Object, is a normal Javaobjectclass (that is, not aJavaBean, EntityBean etc.) and does not serve any other special role nor does it implement any special interfaces of any of the Java frameworks. This term was coined by Martin Fowler, Rebbecca Parsons and Josh MacKenzie who believed that by creating the acronym POJO, such objects would have a "fancy name", thereby convincing people that they were worthy of use.
基本意思是说POJO一个正规的Java对象(不是JavaBean,EntityBean等),也不担当任何的特殊的角色,也不实现任何Java框架指定的接口。
POJO(Plain Old Java Object)这个名字用来强调它是一个普通java对象,而不是一个特殊的对象,同时不含有业务逻辑和持久化,可以有简单的代码。
“POJO”主要用来指代那些没用遵从特定的Java对象模型,约定或框架如EJB的Java对象.
理想地讲,一个POJO是一个不受任何限制的Java对象(除了Java语言规范)。例如一个POJO不应该是

  1. 扩展预定的类,如       public class Foo extends javax.servlet.http.HttpServlet { ...
  1. 实现预定的接口,如   public class Bar implements javax.ejb.EntityBean { ...
  1. 包含预定的标注,如   @javax.ejb.Entity public class Baz{ ...
然后,因为技术上的困难及其他原因,许多兼容POJO风格的软件产品或框架事实上仍然要求使用预定的标注,譬如用于更方便的持久化。
 
JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:
  1. 这个类必须有一个公共的缺省构造函数。
  1. 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。
  1. 这个类应是可序列化的。 
因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。
 
简而言之,当一个Pojo可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,他就是一个JavaBean。

转自@留下脚印 http://blog.csdn.net/wozeze1/article/details/6045627