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个,一般常用native和uuid这两个主键生成器。
1、native主键生成器:自增长列,从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
3、assigned主键生成器:由用户自己定义数据值,数据类型根据数据值定义
(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>