持久化类

Hibernate 的完整概念是提取 Java 类属性中的值,并且将它们保存到数据库表单中。映射文件能够帮助 Hibernate 确定如何从该类中提取值,并将它们映射在表格和相关域中。

在 Hibernate 中,其对象或实例将会被存储在数据库表单中的 Java 类被称为持久化类。若该类遵循一些简单的规则或者被大家所熟知的 Plain Old Java Object (POJO) 编程模型,Hibernate 将会处于其最佳运行状态。以下所列就是持久化类的主要规则,然而,在这些规则中,没有一条是硬性要求。

  • 所有将被持久化的 Java 类都需要一个默认的构造函数。
  • 为了使对象能够在 Hibernate 和数据库中容易识别,所有类都需要包含一个 ID。此属性映射到数据库表的主键列。
  • 所有将被持久化的属性都应该声明为 private,并具有由 JavaBean 风格定义的 getXXXsetXXX 方法。
  • Hibernate 的一个重要特征为代理,它取决于该持久化类是处于非 final 的,还是处于一个所有方法都声明为 public 的接口。
  • 所有的类是不可扩展,按 EJB 要求实现的一些特殊的类和接口。

POJO 的名称用于强调一个给定的对象是普通的 Java 对象,而不是特殊的对象,尤其不是一个 Enterprise JavaBean。

一个简单的 POJO 的例子

基于以上所述规则,我们能够定义如下 POLO 类:

  1. public class Employee {
  2. private int id;
  3. private String firstName;
  4. private String lastName;
  5. private int salary;
  6. public Employee() {}
  7. public Employee(String fname, String lname, int salary) {
  8. this.firstName = fname;
  9. this.lastName = lname;
  10. this.salary = salary;
  11. }
  12. public int getId() {
  13. return id;
  14. }
  15. public void setId( int id ) {
  16. this.id = id;
  17. }
  18. public String getFirstName() {
  19. return firstName;
  20. }
  21. public void setFirstName( String first_name ) {
  22. this.firstName = first_name;
  23. }
  24. public String getLastName() {
  25. return lastName;
  26. }
  27. public void setLastName( String last_name ) {
  28. this.lastName = last_name;
  29. }
  30. public int getSalary() {
  31. return salary;
  32. }
  33. public void setSalary( int salary ) {
  34. this.salary = salary;
  35. }
  36. }