普通的旧Java对象该名称用来强调给定对象是普通的Java对象,而不是EJB 2框架定义的特殊对象。
A类{}
B类扩展/实现C {}
注意:当C是一种分布式框架类或ifc时,B是非POJO。例如javax.servlet.http.HttpServlet,javax.ejb.EntityBean或J2EE extn,并且不可序列化/可比较。由于可序列化/可比较对POJO有效。
这里A是独立的简单对象。B是B的特殊对象,因为B正在扩展/实现C。因此B对象从C获得更多含义,并且B严格遵循C的规则。B与分布式框架紧密耦合。因此,从其定义来看,B对象不是POJO。
使用类的代码对象引用不必知道其类型,它可以与许多框架一起使用。
因此,POJO不必1)扩展预定的类和2)实现预定的接口。
JavaBean是POJO的示例,它是可序列化的,具有无参数构造函数,并允许使用遵循简单命名约定的getter和setter方法访问属性。
POJO纯粹专注于业务逻辑,不依赖(企业)框架。这意味着它具有用于业务逻辑的代码,但是该实例的创建方式,该对象属于哪个服务(EJB ..)以及它具有哪些特殊特征(有状态/无状态),将由框架使用外部xml来确定。文件。
示例1:JAXB是将Java对象表示为XML的服务;这些java对象很简单,并带有默认的构造函数getter和setters。
示例2:Hibernate,其中将使用简单的Java类来表示Table。列将为其实例。
示例3:REST服务。在REST服务中,我们将具有服务层和Dao层,以通过DB执行一些操作。因此,Dao将具有特定于供应商的查询和操作。服务层将负责调用哪个DAO层来执行数据库操作。DAO的创建或更新API(方法)将以POJO为参数,并更新该POJO并插入/更新到DB中。这些POJO(Java类)将仅具有每列的状态(实例变量)以及其getter和setter。
在实践中,有些人认为注释优雅,而他们却认为XML冗长,丑陋且难以维护,而另一些人则发现注释污染了POJO模型。因此,作为XML的替代方案,许多框架(例如Spring,EJB和JPA)允许使用注解代替XML或在XML之外使用注解:
优点:
将应用程序代码与基础架构框架分离是使用POJO的众多好处之一。使用POJO可以通过将应用程序与不稳定的,不断发展的基础架构框架分离开来,从而证明您的应用程序的业务逻辑。升级到新版本或切换到其他框架变得更容易,风险也更低。POJO还使测试更加容易,从而简化并加速了开发。您的业务逻辑将更加清晰和简单,因为它不会与基础结构代码纠缠在一起
参考:Wiki source2