揭开POJO的神秘面纱

时间:2021-05-03 00:22:03

      众所周知,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混淆起来, 而且简称比较直接其中有一些属性及其gettersetter方法的类没有业务逻辑,有时可以作为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都有了一个基本的了解了。