持久化类
Hibernate的整个概念是采取从Java类属性的值,并将持久到数据库表。一个映射文件Hibernate的帮助确定如何从拉动类的值,并将它们映射与表和相关的域。
其对象或实例将存储在数据库表中的Java类在Hibernate中称为持久化类。 Hibernate的效果最好,如果这些类遵循一些简单的规则,也称为普通Java对象(POJO)编程模型。有下列持久化类的主要规则,但是,这些规则并不是必需的。
将所有的持久化Java类需要一个默认的构造函数。
所有类应该包含为了让容易识别对象内Hibernate和数据库的ID。此属性映射到数据库表的主键列。
所有属性将被持久化应该声明为private,并已在JavaBean风格的定义的getXXX和setXXX方法。
Hibernate的关键功能,代理,取决于持久化类或者是非final的,或者说声明的所有公共方法的接口的实现。
所有的类不扩展或实现的EJB框架需要进行一些专门的类和接口。
POJO名称用于强调一个给定的对象是一个普通的Java对象,而不是一个特殊的对象,好更不是Enterprise JavaBean。
一个简单的POJO例子:
基于上面提到的一些规则,我们可以如下定义一个POJO类:
public class Employee { private int id; private String firstName; private String lastName; private int salary; public Employee() {} public Employee(String fname, String lname, int salary) { this.firstName = fname; this.lastName = lname; this.salary = salary; } public int getId() { return id; } public void setId( int id ) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName( String first_name ) { this.firstName = first_name; } public String getLastName() { return lastName; } public void setLastName( String last_name ) { this.lastName = last_name; } public int getSalary() { return salary; } public void setSalary( int salary ) { this.salary = salary; } }
映射文件
对象/关系映射的XML文档中通常被定义。这个映射文件指示Hibernate如何定义的一个或多个类映射到数据库表。
虽然很多Hibernate用户选择手工编写XML中,有一些工具可以用来生成映射文档。包括XDoclet,Middlegen和AndroMDA等用于高级Hibernate的用户。
让我们考虑我们的对象将坚持在下一节中定义的表前面定义的POJO类。
public class Employee { private int id; private String firstName; private String lastName; private int salary; public Employee() {} public Employee(String fname, String lname, int salary) { this.firstName = fname; this.lastName = lname; this.salary = salary; } public int getId() { return id; } public void setId( int id ) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName( String first_name ) { this.firstName = first_name; } public String getLastName() { return lastName; } public void setLastName( String last_name ) { this.lastName = last_name; } public int getSalary() { return salary; } public void setSalary( int salary ) { this.salary = salary; } }
会有一个表对应于每一个对象,你愿意提供持久性。考虑上述目的需要存储和检索到下面的RDBMS表:
create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VARCHAR(20) default NULL, last_name VARCHAR(20) default NULL, salary INT default NULL, PRIMARY KEY (id) );
基于以上两个实体,我们可以定义它指示Hibernate如何定义的一个或多个类映射到数据库表下面的映射文件。
<&#63;xml version="1.0" encoding="utf-8"&#63;>This class contains the employee detail.
保存的映射文件中的格式:
映射文档是具有
在
元素是可选元素,可以用来创建类的描述。
id元素内的
还有这将在映射文件中使用,接下来尽量覆盖尽可能多其他的Hibernate相关主题的其他属性和可用的元素。