【原创】Hibernate基础之(三)Hibernate的主键生成策略

2020-08-07 14:57发布

Hibernate基础之(三)Hibernate的主键生成策略


Hibernate框架要求实体Bean中有一个值唯一的属性,对应数据表中的主键。

在实体Bean的映射文件中,必须有一个<id>定义,该id可以由主键生成器生成,也可以自定义数据值,例如:

<!-- 定义一个实体Bean -->

<class name="com.offcn.bean.Customer" table="t_customer">

    <!-- 定义主键【必须的】 -->

    <id name="cid" column="cid">

<generator class="主键生成策略"></generator>【可选项】

</id>

</class>

常用的主键生成策略有6个,一般常用nativeuuid这两个主键生成器。

1native主键生成器:自增长列,从1开始,会根据数据库,自动匹配,数据类型:整数

1)格式

<id name="cid" column="cid">

<generator class = "native"></generator>

</id>

2)要求

实体bean中,属性的数据类型为int/long

(3)Hibernate框架会根据数据库,自动匹配native生成的主键类型

Oracle的自增长列是:sequence

SQL Server的自增长列是:identity

MySQL的自增长列是:auto_increment


2、uuid主键生成器:32位随机数,数据类型必须是:String

1)格式

<id name="cid" column="cid">

<generator class="uuid"></generator>

</id>

2)要求

实体bean中,属性的数据类型为String

3assigned主键生成器:由用户自己定义数据值,数据类型根据数据值定义

1)格式

<id name="cid" column="cid">

<generator class = "assigned"></generator>

</id>

2)要求

实体bean中,属性的数据类型任意


4、主键定义实例

<!-- 定义主键【必须的】 -->

<id name="cid" column="cid">

<!-- 由用户自己定义主键的数据值 -->

<generator class="assigned"></generator>

<!-- 32位随机数 -->

<!-- <generator class="uuid"></generator> -->

<!-- 自增长数据,从1开始递增,数值类型int/long -->

<!-- <generator class="native"></generator> -->

</id>