Hibernate映射文件(X .hbm.xml)
上节《hibernate.cfg.xml》中讲解了 Hibernate 核心配置文件,本节我们继续讲解 Hibernate 映射文件。
Hibernate 映射文件用于在实体类对象与数据表之间建立映射关系,每个映射文件的结构基本相同,示例代码如下所示。
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate网站站点" rel="nofollow" />
<id name="id" column="id" type="integer">
<!--主键生成策略-->
<generator class="native" ></generator>
</id>
Hibernate 提供了以下 7 主键生成策略,如下表。
主键生成策略 | 说明 |
---|---|
increment | 自动增长策略之一,适 short、int、long 等类型的字段。该策略不是使用数据库的自动增长机制,而是使用 Hibernate 框架提供的自动增长方式,即先从表中查询主键的值, 然后在值的基础上+1。该策略存在多线程问题,一般不建议使用。 |
identity | 自动增长策略之一,适 short、int、long 等类型的字段。该策略采用数据库的自动增长机制,但该策略不适用于 Oracle 数据库。 |
sequence | 序列,适 short、int、long 等类型的字段。该策略应用在支持序列的数据库,例如 Oracle 数据库,但不是适用于 MySQL 数据库。 |
uuid | 适用于字符串类型的主键,采用随机的字符串作为主键。 |
native | 本地策略,Hibernate 会根据底层数据库不同,自动选择适用 identity 还是 sequence 策略,该策略也是最常用的主键生成策略。 |
assigned | Hibernate 框架放弃对主键的维护,主键由程序自动生成。 |
foreign | 主键来自于其他数据库表(应用在多表一对一的关系)。 |
<property> 元素
<class> 元素中可以包含一个或多个 <property> 子元素,它用于表示实体类的普通属性(除与数据表主键字段对应的属性之外的其他属性)和数据表中非主键字段的映射关系。该元素中包含的常用属性如下表。属性名 | 描述 |
---|---|
name | 实体类属性的名称 |
column | 数据表字段名 |
type | 用于指定数据表中的字段需要转化的类型,这个类型既可以是 Hibernate 类型,也可以是 Java 类型 |
length | 数据表字段的长度 |
lazy | 该属性使用延迟加载,默认值是 false |
unique | 是否对该字段使用性约束。 |
not-null | 是否允许该字段为空 |
此外,在 Hibernate 映射文件中,父元素中子元素必须遵循一定的配置顺序,例如在 <class> 元素中必须先定义 <id>元素,再定义 <property> 元素,否则 Hibernate 的 XML 解析器在运行时会报错。