知识大全 Hibernate主键生成方式 Key Generator

Posted 数据库

篇首语:初心不与年俱老,奋斗永似少年时。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate主键生成方式 Key Generator相关的知识,希望对你有一定的参考价值。

Hibernate主键生成方式 Key Generator  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Hibernate主键生成方式 Key Generator主键产生器可选项说明 ) assigned主键由外部程序负责生成 无需Hibernate参与

   ) hilo通过hi/lo 算法实现的主键生成机制 需要额外的数据库表保存主键生成历史状态

   ) seqhilo与hilo 类似 通过hi/lo 算法实现的主键生成机制 只是主键历史状态保存在Sequence中 适用于支持Sequence的数据库 如Oracle

   ) increment主键按数值顺序递增 此方式的实现机制为在当前应用实例中维持一个变量 以保存著当前的最大值 之后每次需要生成主键的时候将此值加 作为主键

  这种方式可能产生的问题是 如果当前有多个实例访问同一个数据库 那么由于各个实例各自维护主键状态 不同实例可能生成同样的主键 从而造成主键重复异常 因此 如果同一数据库有多个实例访问 此方式必须避免使用

   ) identity采用数据库提供的主键生成机制 如DB SQL Server MySQL中的主键生成机制

   ) sequence采用数据库提供的sequence 机制生成主键 如Oralce 中的Sequence

   ) native由Hibernate根据底层数据库自行判断采用identity hilo sequence其中一种作为主键生成方式

   ) uuid hex由Hibernate基于 位唯一值产生算法生成 进制数值(编码后以长度 的字符串表示)作为主键

   ) uuid string与uuid hex 类似 只是生成的主键未进行编码(长度 ) 在某些数据库中可能出现问题(如PostgreSQL)

   ) foreign使用外部表的字段作为主键

  一般而言 利用uuid hex方式生成主键将提供最好的性能和数据库平台适应性

  另外由于常用的数据库 如Oracle DB SQLServer MySql 等 都提供了易用的主键生成机制(Auto Increase 字段或者Sequence) 我们可以在数据库提供的主键生成机制上 采用generator class=native的主键生成方式 不过值得注意的是 一些数据库提供的主键生成机制在效率上未必最佳 大量并发insert数据时可能会引起表之间的互锁

  数据库提供的主键生成机制 往往是通过在一个内部表中保存当前主键状态(如对于自增型主键而言 此内部表中就维护着当前的最大值和递增量) 之后每次插入数据会读取这个最大值 然后加上递增量作为新记录的主键 之后再把这个新的最大值更新回内部表中 这样 一次Insert操作可能导致数据库内部多次表读写操作 同时伴随的还有数据的加锁解锁操作 这对性能产生了较大影响

cha138/Article/program/Java/ky/201311/28199

相关参考

知识大全 hibernate中自定义主键生成器[1]

  Hibernate(目前使用的版本是)中提供了多种生成主键的方式  然而当前的这么多种生成方式未必能满足我们的要求  比如increment可以在一个hibernate实例的应用上很方便的时候但是

知识大全 Hibernate主键生成策略

Hibernate主键生成策略  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自动增长ident

知识大全 常用Hibernate主键生成策略

常用Hibernate主键生成策略  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天学习到了关

知识大全 hibernate中自定义主键生成器[2]

publicvoidconfigure(TypetypePropertiesparamsDialectd)throwsMappingExceptionStringtable=paramsgetProp

知识大全 Hibernate复合主键查询

Hibernate复合主键查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hibernate

知识大全 Hibernate复合主键映射

Hibernate复合主键映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Hibernate中配置复合主键映射

Hibernate中配置复合主键映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  通常将复合主

知识大全 Hibernate一对一 主键关联映射

Hibernate一对一主键关联映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 Hibernate(jpa)复合主键annotation声明方法

Hibernate(jpa)复合主键annotation声明方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 hibernate注解实现复合主键

  有时一个实体的主键可能同时为多个例如同样是之前使用的CustomerEO实体需要通过name和email来查找指定实体当且仅当name和email的值完全相同时才认为是相同的实体对象要配置这样的复