Hibernate主键的生成策略
<class name="Customers" table="customers">
<id name="id" column="id">
<!-- 主键的生成策略 -->
<generator class="native"></generator>
</id>
<class>
<id>标签是为每一个实例包含唯一的标识,唯一的标识要有主键生成器,可选的 <generator>子元素是一个java类的名字,用来为该持久化类的实例生成唯一的标识。
所有的主键生成器都实现org.hibernate.id.TableLoGenerator接口
下面主要讨论一下hibernate内置生成器的快捷名字和使用
分为下面几种:
increment,identity,sequence,
Hilo, seqhilo, uuid, guid, native, assigned, select, foreign, sequence-identity
分别来介绍一下这几个取值的作用和意义:
increment
用于为long和short或者int类型生成唯一标识符,只有在没有其他进程往同一张表插入数据时才能使用,在集体下不要使用
ientity
对DB2,MySql,MS SQL Server,Sybase和HypersonicSQL的内置标识字段提供支持,返回的标识符是long,short或者int类型的。
sequence
在DB2.,PostgreSQL,SAP DB,McKoi中使用序列,而在Interbase中使用生成器。返回的标识符是long,short或者int类型的。
hilo
使用一个高/低位算法高效的生long,short,获取int类型的标识符,给定义二表和字段作为高位置的来源。高低位算法生成的标识符只在一个特定的数据库中是唯一的。
seqhilo
使用一个高/低位算法来高效的生成long,short获取int类型的标识符,给定一个数据库序列的名字
uuid
用一个128-bit的UUID算法生成字符串类型的标识符,这是在一个网络中是唯一的,UUID被编码为一个32位16进制数字的字符串
guid
在MS SQL Server和MySql中使用数据库生成GUID字符串
native
根据底层数据库的能力选择identity,sequence获取hilo中的一个
assigned
让应用程序在save()之前为对象分配一个标识符,这是<geneerator>元素没有指定时的默认的生成策略
select
通过数据库触发器选择一些唯一主键的行并返回主键值来分配一个主键
foreign
通过另外一个相关联的对象的标识符,通常和<ont-to-one>联合起来使用
sequence-identity
一种特别的序列生成的策略,使得数据库序列来生成实际值,但将它和JDBC3的getGeneratedKeys结合在一起,使得在插入语句执行的的时候就返回生成的值,目前为止只有面向对象JDK1.4的Oracle 10g驱动支持这一策略,注意,因为Oracle驱动程序的一个bug,这些插入语句的注释被关闭了。
可以总结一下,对Oracle数据进行使用的有:
1) assigned
2) hilo
3) seqhilo
4) increment
5) identity
6) sequence
7) native方式。
8) uuid.hex 9) uuid.string
10) foreign
分享到:
相关推荐
Hibernate面试题-详尽解析,是本人搜集的一套有关hibernate的典型面试题,并对里面所有题目,经多方搜集和学习,做了详尽解说,部分附有代码说明。
hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-4.1.12.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar ...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
关于Hibernate的各种主键生成策略与配置详解
hibernate映射文件--主键生成策略[参考].pdf
常用Hibernate主键生成策略 常用Hibernate主键生成策略 常用Hibernate主键生成策略 常用Hibernate主键生成策略
hibernate的主键生成策略介绍,详细介绍了有关hibernate的常用主键生成策略,希望对一些正在学习hibernate的同学有一定的帮助
Hibernate主键生成策略.doc ··········
Hibernate中主键生成策略,开发的时候经常会用到的我都整理到这里了~
Hibernate面试题专栏 - 最全的Hibernate面试题, Hibernate笔试题, Hibernate问题 Hibernate教程
Hibernate各种主键生成策略详解,包括 assigned increment hilo seqhilo sequence identity native uuid foreign uuid.hex sequence-identity 等
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
总结一下关于JPA的主键生成策略,JPA是用@GeneratedValue标记来注释的。一般的我把主键生成分成两大类。第一个就是简单的单字段主键类型,一个就是复杂的复合主键类型。我们分2种情况分别讨论。 第一种单字段主键...
SSH中H的主键生成策略,对于hibernate的使用与开发具有重要参考学习作用。。。。。。。。。。。。。。。。。。。。。
很多人为了配置jpa找这个动态产生字节码的jar文件,hibernate-distribution-3.3.1.GA包太大,而hibernate-distribution-3.3.2.GA的jar没有这个jar文件,希望对大家有用
hibernate-annotations-3.4.0.GA hibernate-annotations-3.4.0.GA hibernate-annotations-3.4.0.GA
hibernate-jpa-2.0-api-1.0.1.Final.jar