开发者都已经发现实体Bean过于复杂,而且生产性也不高。正是由于这些原因,许多开发者又回归了传统,开始使用那些最基本的Java Bean,也就是POJO(Plain Old Java Object)。
Hibernate把业务模型实现为POJO。在Hibernate中强加给业务模型的需求同时也是开发POJO的最佳实践。因此,绝大部分的POJO都可以作为Hibernate中的实现而无需做任何的改动。我们将要介绍的编程模型是非插入式的Javabean规范、POJO的最佳实践以及Hibernate的需求。通常一个POJO描述了业务操作—被定义为行为;属性--代表状态。还有一些属性用来表示POJO之间的关联关系。
列表3.1展示了一个最普通的POJO。它是我们业务模型中User实体的实现。
(1)Hibernate并不要求持久化类实现Serializable接口。但是如果你的对象需要保存在HttpSession中或者通过RMI传递的话,序列化则是一个必选项。
(2)一般情况下,Javabean并不需要显式的声明一个构造方法,但是Hibernate要求每一个Javabean都需要实现了一个无参数的构造方法。然后Hibernate通过Java的反射机制来调用生成类的对象。虽然并不要求构造方法是public的,但是起码在package中是可见的。
(3)POJO的属性实现了业务实体的属性,举例来说,用户名。属性通常为实现为实体的变量以及方位这些变量的方法:通常表现为getXXX和setXXX。3.1中的POJO提供了用户名和地址的访问方法。
Javabean规范了中提供了对于这些方法的命名规范。这些规范可以帮助Hibernate很容易的访问和修改这些属性。
Hibernate并不强制要求get方法声明成public的,它也可以使用私有的方法来访问变量。
当然一些get方法可能还会做一些其他方面的操作,例如验证。
(4)POJO还定义了相关的业务方法来计算运送给指定用户的费用。
现在我们已经看到了使用POJO的编程模型,接下来我们将介绍如何处理这些类之间的关联关系。