Hibernate的主键生成策略学习笔记

来源:互联网 发布:医学图像配准算法 编辑:程序博客网 时间:2024/04/30 04:00

Hibernate主键生成策略分为如下几类:

  • increment  代理主键,顾名思义自增长,但是这个自增长由Hibernate维护,适用于所有数据库,问题也来了,因为是Hibernate管理,故对于集群的应用是不适用的,只适用于单个应用的情况;
  • identify 代理主键,由数据库维护,适用的数据库有:mysql和sql server等;
  • sequence 代理主键,序列,由数据库维护,适用的数据库有oracle等;
  • native:代理主键,Hibernate将根据数据的类型,自动的指定是由identify或者sequence来生成主键;
  • uuid.hex,代理主键,这个由Hibernate生成uuid生成主键值,适用于所有;
  • assign,既不是数据库也不是Hibernate,由应用程序负责生成主键,不推荐这种类型;
  • hilo,代理主键,采用hilo算法生成主键值,适用于和sequence相同的数据库。

代理主键

所谓的代理主键就是和业务字段无关,专门用来充当主键的字段。

sequence

sequence类型适用于oracle,DB2等支持序列的数据库。适用之前需要在数据库中创建一个sequence

创建sequence语法如下,以oracle为例

oracle:create sequence seq_name increment by 1 start with 1;

 

配置文件如下

<id name="id" column="id" type="long">    <generator class="sequence">       <param name="sequence">seq_name</param>   </generator></id>

 

 

更详细的介绍,可参考这篇文章

Hibernate主键生成策略详细介绍

原创粉丝点击