POJO对象

Posted 素而安然

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJO对象相关的知识,希望对你有一定的参考价值。

POJO(Plain Old Java Objects)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。

使用POJO名称是为了避免和 EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为 VO(value -object)或 dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

POJO是Plain Old Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程 序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了 很大的方便。
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,在它里面除了JavaBean规范的方法和属性没有别的东西,即 private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储 的载体,而不具有业务逻辑处理的能力。
真正的意思:
POJO = "Plain Ordinary Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如, EJBJDBC等等。
即POJO是一个简单的普通的Java对象,它不包含业务 逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
技术分享
 
 
 

1.     什么是POJO

POJO的名称有多种,pure old java object 、plain ordinary java object 等。

按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。

 

POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。

 

POCO的概念是从java的POJO借用而来,而两者的含义是一致的,不同的仅仅是使用的语言不一样。所以POCO的解释就是“Plain Old C# Object”。

2.     为什么会有POJO?

主要是Java的开发者被EJB的繁杂搞怕了,大家经过反思,又回归“纯洁老式”的JavaBean,即有无参构造函数,每个字段都有getter和setter的java类。

3.     POJO的意义

POJO让开发者可专注于业务逻辑和脱离框架的单元测试。除此之外, 由于POJO并不须要继承框架的类或实现其接口,开发者能够极其灵活地搭建继承结构和建造应用。

 

POJO的意义就在于它的简单而灵活性,因为它的简单和灵活,使得POJO能够任意扩展,从而胜任多个场合,也就让一个模型贯穿多个层成为现实。

先写一个核心POJO,然后实现业务逻辑接口和持久化接口,就成了Domain Model; UI需要使用时,就实现数据绑定接口,变成VO(View Object)。

4.     POJO与PO、VO的区别

POJO是指简单java对象(Plain Old Java Objects、pure old java object 或者 plain ordinary java object)。

PO是指持久对象(persistant object持久对象)。

VO是指值对象或者View对象(Value Object、View Object)。注意,本文的VO特指View Object。

 

持久对象实际上必须对应数据库中的entity,所以和POJO有所区别。比如说POJO是由new创建,由GC回收。但是持久对象是insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相关。另外持久对象往往只能存在一个数据库Connection之中,Connnection关闭以后,持久对象就不存在了,而POJO只要不被GC回收,总是存在的。

 

由于存在诸多差别,因此持久对象PO(Persistent Object)在代码上肯定和POJO不同,起码PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。而ORM追求的目标就是要PO在使用上尽量和POJO一致,对于程序员来说,他们可以把PO当做POJO来用,而感觉不到PO的存在。

5.     POJO的扩展

POJO仅包含最简单的字段属性,没有多余的东西,它本质上就是一个普通的JavaBean。

但是在POJO的基础上,能够扩展出不同的对象。

l           为POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就变成了PO。

l           为POJO增加了数据绑定功能之后,POJO就变成了View Object,即UI Model。

l           为POJO增加业务逻辑的方法(比如单据审核、转帐……)之后,POJO就变成了Domain Model。

l           POJO还可以当作DTO使用。

以上是关于POJO对象的主要内容,如果未能解决你的问题,请参考以下文章

POJO(普通旧 Java 对象)和 DTO(数据传输对象)有啥区别?

POJO简介pojo模块

POJO——简单Java对象

POJO对象

将JSON映射到现有的pojo对象

Mybatis——传入POJO对象,动态SQL,多表关系