知识大全 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(目前使用的版本是)中提供了多种生成主键的方式 然而当前的这么多种生成方式未必能满足我们的要求 比如increment可以在一个hibernate实例的应用上很方便的时候但是
Hibernate主键生成策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 自动增长ident
常用Hibernate主键生成策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天学习到了关
publicvoidconfigure(TypetypePropertiesparamsDialectd)throwsMappingExceptionStringtable=paramsgetProp
Hibernate复合主键查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Hibernate
Hibernate复合主键映射 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Hibernate中配置复合主键映射 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 通常将复合主
Hibernate一对一主键关联映射 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
知识大全 Hibernate(jpa)复合主键annotation声明方法
Hibernate(jpa)复合主键annotation声明方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
有时一个实体的主键可能同时为多个例如同样是之前使用的CustomerEO实体需要通过name和email来查找指定实体当且仅当name和email的值完全相同时才认为是相同的实体对象要配置这样的复