众所周知,Struts2中的Action编写有三种方式,分别是:(1)POJO(Plain Old Java Object);(2)实现Action接口,重写execute()方法;(3)继承ActionSupport类。那么其中的POJO到底是什么呢?它与JavaBean又有什么关系呢?接下来,我们一起来揭开POJO的神秘面纱。
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了很大的方便。
POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接。其中有一些属性及其getter,setter方法的类,没有业务逻辑,有时可以作为VO(value-object)或DTO(Data Transform Object)来使用。当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。
有人认为POJO是一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。这种认知是不正确的。
POJO这个名字用来强调它是一个普通java对象,而不是一个特殊的对象。POJO主要用来指代那些没用遵从特定的Java对象模型、约定或框架的Java对象。理论上,一个POJO是一个不受任何限制的Java对象(除了Java语言规范)。而JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:
1)这个类必须有一个公共的缺省构造函数。
2)这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。
3)这个类应是可序列化的。
因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。简而言之,当一个POJO可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,它就是一个JavaBean。所以说把POJO看成一种“纯粹的”JavaBean是不准确的。
好了,至此我相信大家对POJO都有了一个基本的了解了。