码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate主键生成器

时间:2015-12-21 18:31:41      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

主键生成器负责生成数据表记录的主键:
increment:为long,short或者int类型主键生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。在集群下不能使用!


identity:在DB2,MySQL,Microsoft SQL Server,Sybase和HypersonicSQL等提供identity(自增长)主键支持的数据表中适用。返回的标识属性是long,short或int类型的


sequence:在DB2,PostgreSQL,Oracle,SAP DB,McKoi等提供sequence支持的数据表中适用。返回的标识属性值是long,short或int类型。


hilo:使用一个高/低位算法高效的生成long,short或int类型的标识符。给定一个表和字段(默认分别是hibernate_unique_key和next_int)作为高位值的来源。高/低位算法生成的标识属性只在一个特定的数据库中是唯一的。


seqhilo:使用一个高/低位算法来高效的生成long,short或int类型的标识符,需要给定一个数据库sequence名。该算法和hilo稍有不同,它将主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。


uuid:用一个128位的UUID算法生成字符串类型的标识符,这在一个网路中是唯一的(IP地址也作为算法的数据源)。UUID被编码为一个32位十六进制数的字符串。

<id name="id" column="id" type="string" length="32">
     <generator class="uuid.hex" />
</id>

guid:在Microsoft SQL Server和MySQL中使用数据库生成GUID字符串。


native:根据底层数据库的能力选择identify,sequence或hilo中的一个。

 <id name="id" column="id" type="long">
      <generator class="native" />
 </id>

assigned:让应用程序在save()之前为对象分配一个标识符。这相当于不指定<generator../>元素默认时采用的默认策略。

<id name="id" type="java.lang.String" column="id" length="32" >           
      <generator class="assigned" />
</id>

select:通过数据库触发器选择某个唯一主键的行,并返回其主键值作为标识属性值。


foreign:表明直接使用另一个关联对象的标识属性值(即本持久化对象不能生成主键)。









Hibernate主键生成器

标签:

原文地址:http://www.cnblogs.com/liaojie970/p/5064069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!