<generator class="native"/>
1、
Assigned
主键由应用逻辑产生,数据交由Hibernate保存时,主键值已经设置完毕,无需hibernate干预。(在主键要特殊设置,有特殊意义的情况下使用,Hibernate不会自动生成了,否则会生成后替换到自己设定的主键)
2、
hilo
通过hi/lo算法实现主键生成建机制,需要额外的数据库表保存主键生成的历史状态。
3、
seqhilo
与hilo类似,通过hi/lo算法实现的主键生成机制,只要主键历史状态保存在sequence中,适用于支持sequence的数据库,例如:oracle。
4、
increment
主键按数值顺序递增,此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成之间的时候将此值基础上加1作为主键。
这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同的实例可能生成相同的主键,从而造成主键重复异常。因此。如果同一个数据库有多个实例访问,此方式必须避免使用。
5、
identity
采用数据库提供的主键生成机制,如SQL SERVER,MYSQL中的自增主键生成机制。
6、
sequence
采用数据库提供的sequence机制生成主键,如oracle Sequence
7、
native
由hibernate根据数据库适配器中的定义,自动采用identity、hilo、sequence的其中一种作为主键生成方式。
8、
uuid.hex
由hibernate基于128位唯一值产生算法,根据当前设备IP,时间,JVM启动时间,内部自增量等4个参数生成十六进制数组(编码后以长度为32位的字符串表示)作为主键。
这种算法在最大程度上保证了产生ID的唯一性,即使是在多实例并发运行情况下,当然,重复的概率在理论上依然存在,只是实际上太过于渺茫。
一般而言,利用uuid.hex方式生成主键将提供做好的数据插入性能和数据库平台适用性。
9、
uuid.String
与uuid.hex类似,只是生成的主键未进行编码(长度16位)。在某些数据库中可能出现问题(如PostgreSQL)
10、
foreign
使用外部表的字段作为主键。
11、
select
Hibernate3中新引入的主键获取机制,主要针对遗留系统的改造工程。
分享到:
相关推荐
一种优化的主键生成方式,使用较小的整数范围(高位数)和数据库表中的行(低位数)来生成主键,减少对数据库的访问。使用`<generator class="hilo">`。 理解并正确选择主键生成策略对于优化数据库性能、保证数据...
关于Hibernate的各种主键生成策略与配置详解
其中,主键生成策略是Hibernate配置中的一个重要部分,它决定了表中的主键值如何生成。本文将重点介绍在Oracle数据库环境下,使用Hibernate的“native”策略来生成主键的具体方法及注意事项。 #### 二、主键生成...
以下是关于Hibernate主键生成方式的详细说明: 1. **Identity方式**:`<generator class="identity"/>` 这种方式依赖于数据库自身的自动增长机制。例如,在MySQL中,它可以与`AUTO_INCREMENT`属性配合使用。当...
Hibernate各种主键生成策略详解,包括 assigned increment hilo seqhilo sequence identity native uuid foreign uuid.hex sequence-identity 等
在 Hibernate 中,主键生成策略是一个重要的概念,用于指定如何为持久化对象生成唯一的标识符(即主键)。合理的主键生成策略不仅能提高应用程序的性能,还能确保数据的一致性和完整性。 #### 二、主键生成策略分类...
### Hibernate的主键生成方式详解 #### 一、概述 在使用Hibernate进行对象关系映射时,一个重要的概念就是如何为持久化实体类中的主键字段生成唯一标识符。主键是表中的一列或一组列,其值是唯一的,用于唯一地...
1主键常用的生成策略 2对数据库的依赖性总结 3关于主键生成策略的选择 详细解释
在Hibernate中,可以使用`<generator class="sequence">`来指定使用Sequence作为主键生成策略,并通过`<param name="sequence">SEQ_CHILD</param>`来指定具体的序列名称。这种方式适用于需要生成大量连续主键值的...
### Hibernate 主键生成策略详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (ORM) 框架,它极大地简化了 Java 应用程序与数据库之间的交互过程。在使用 Hibernate 进行持久化操作时,经常需要处理实体类...
本文是讲解的是hibernate3.2的主键生成方式,通过annotation来实现,详细的分析了主键在hibernate的生成以及在真实项目的运用。。。。
以下是对Hibernate主键生成策略的详细说明: 1. **assigned**: 这种策略要求用户在调用`save()`方法之前手动设置主键值。Hibernate不参与主键的生成,这意味着主键生成完全由应用控制,可以与数据库无关。这种...
### 常用Hibernate主键生成策略详解 #### 一、引言 在数据库设计与操作过程中,主键是确保数据唯一性的关键要素之一。在实际应用中,开发者经常需要处理不同类型的数据库,并且需要应对各种不同的主键生成需求。...
### hibernate主键生成策略详解 #### 一、assigned **assigned** 主键生成策略意味着主键的值是由外部程序负责生成的,并且在执行 `save()` 方法之前必须明确指定一个值。在这种策略下,Hibernate 不参与主键的...
在这个场景中,“hibernate使用主键关联的一对一关系”指的是通过共享主键来实现两个实体类之间的这种一对一绑定。下面我们将深入探讨这一主题。 首先,我们需要理解一对一关系的概念。在数据库中,一对一关系意味...