pojo(plain ordinary java object)简单的java对象,实际就是普通javabeans,是为了避免和ejb混淆所创造的简称。

使用pojo名称是为了避免和ejb混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为vo(value -object)或dto(data transform object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。pojo是plain ordinaryjava object的缩写,但是它通指没有使用entity beans的普通java对象,可以把pojo作为支持业务逻辑的协助类。

外文名

pojo

全称

plain ordinary java object

中文释义

简单的java对象

实际意义

普通javabeans

特 点

支持业务逻辑的协助类

发明者

martinfowler等

pojo是plain ordinaryjava object的缩写,但是它通指没有使用entity beans的普通java对象,可以把pojo作为支持业务逻辑的协助类。

pojo实质上可以理解为简单的实体类,顾名思义pojo类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将pojo类当做对象来进行使用,当然也是可以方便的调用其get,set方法。pojo类也给我们在struts框架中的配置带来了很大的方便[1]

pojo有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口。例如:

public class user {

private long id;

private string name;

public void setid(long id) {

this. id = id;

}

public void setname(string name) {

this. name=name;

}

public long getid() {

return id;

}

public string getname() {

return name;

}

}

pojo对象有时也被称为data对象,大量应用于表现现实中的对象。如果项目中使用了hibernate框架,有一个关联的xml文件,使对象与数据库中的表对应,对象的属性与表中的字段相对应。

pojo 和javabean是我们常见的两个关键字,一般容易混淆,pojo全称是plain ordinary java object / pure ordinary java object,中文可以翻译成:普通java类,具有一部分getter/setter方法的那种类就可以称作pojo,但是javabean则比 pojo复杂很多, java bean 是可复用的组件,对 java bean 并没有严格的规范,理论上讲,任何一个 java 类都可以是一个 bean 。但通常情况下,由于 java bean 是被容器所创建(如 tomcat) 的,所以 java bean 应具有一个无参的构造器,另外,通常 java bean 还要实现 serializable 接口用于实现 bean 的持久性。 java bean 是不能被跨进程访问的。javabean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。一般在web应用程序中建立一个数据库的映射对象时,我们只能称它为pojo。pojo(plain old java object)这个名字用来强调它是一个普通java对象,而不是一个特殊的对象,其主要用来指代那些没有遵从特定的java对象模型、约定或框架(如ejb)的java对象。理想地讲,一个pojo是一个不受任何限制的java对象(除了java语言规范)。

错误的认识

pojo是这样的一种“纯粹的”javabean,在它里面除了javabean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的javabean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。

真正的意思

pojo = "plain old java object",是martinfowler等发明的一个术语,用来表示普通的java对象,不是javabean, entitybean 或者 sessionbean。pojo不担当任何特殊的角色,也不实现任何特殊的java框架的接口如,ejb,jdbc等等。

即pojo是一个简单的普通的java对象,它不包含业务逻辑或持久逻辑等,但不是javabean、entitybean等,不具有任何特殊角色和不继承或不实现任何其它java框架的类或接口。

下面是摘自martin fowler个人网站的一句话:

"we wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. so we gave them one, and it's caught on very nicely."--martin fowler

我们疑惑为什么人们不喜欢在他们的系统中使用普通的对象,我们得到的结论是——普通的对象缺少一个响亮的名字,因此我们给它们起了一个,并且取得了很好的效果。——martin fowler