Hibernate映射文件(X .hbm.xml)

7个月前 (04-28)
Hibernate 的常用配置文件主要分为 2 种:核心配置文件(hibernate.cfg.xml)和映射文件(X .hbm.xml),它们主要用于配置数据库连接、事务管理、Hibernate 本身的配置信息以及 Hibernate 映射文件信息。

上节《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 解析器在运行时会报错。