Hibernate 映射文件
hibernate 映射文件
一个对象/关系型映射一般定义在 xml 文件中。映射文件指示 hibernate 如何将已经定义的类或类组与数据库中的表对应起来。
尽管有些 hibernate 用户选择手写 xml 文件,但是有很多工具可以用来给先进的 hibernate 用户生成映射文件。这样的工具包括 xdoclet, middlegen 和 andromda。
让我们来考虑我们之前定义的 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 如何将已定义的类或类组与数据库表匹配。
<?xml version="1.0" encoding="utf-8"?>
<!doctype hibernate-mapping public
"-//hibernate/hibernate mapping dtd//en"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="employee" table="employee">
<meta attribute="class-description">
this class contains the employee detail.
</meta>
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="firstname" column="first_name" type="string"/>
<property name="lastname" column="last_name" type="string"/>
<property name="salary" column="salary" type="int"/>
</class>
</hibernate-mapping>
你需要以格式 <classname>.hbm.xml保存映射文件。我们保存映射文件在 employee.hbm.xml 中。让我们来详细地看一下在映射文件中使用的一些标签:
- 映射文件是一个以
<hibernate-mapping>为根元素的 xml 文件,里面包含所有<class>标签。 <class>标签是用来定义从一个 java 类到数据库表的特定映射。java 的类名使用name属性来表示,数据库表明用table属性来表示。<meta>标签是一个可选元素,可以被用来修饰类。<id>标签将类中独一无二的id属性与数据库表中的主键关联起来。id元素中的name属性引用类的性质,column属性引用数据库表的列。type属性保存 hibernate 映射的类型,这个类型会将从 java 转换成 sql 数据类型。- 在
id元素中的<generator>标签用来自动生成主键值。设置generator标签中的class属性可以设置native使 hibernate 可以使用identity,sequence或hilo算法根据底层数据库的情况来创建主键。 <property>标签用来将 java 类的属性与数据库表的列匹配。标签中name属性引用的是类的性质,column属性引用的是数据库表的列。type属性保存 hibernate 映射的类型,这个类型会将从 java 转换成 sql 数据类型。
还有一些其它属性和元素可用在映射文件中,我会在其它讨论 hibernate 相关的主题中尽可能得涉及更多。


