Hibernate主键生成办法 Key Generator[Java编程]
本文“Hibernate主键生成办法 Key Generator[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Hibernate主键生成方法 Key Generator
主键产生器
可选项阐明:
1) assigned
主键由外部程序负责生成,无需Hibernate参与.
2) hilo
通过hi/lo 算法实现的主键生成机制,需求额外的数据库表保存主键生成历史状况.
3) seqhilo
与hilo 近似,通过hi/lo 算法实现的主键生成机制,只是主键历史状况保存在Sequence中,实用于支持Sequence的数据库,如Oracle.
4) increment
主键按数值次序递增.此方法的实现机制为在当前利用实例中保持一个变量,以保存着当前的最大值,之后每次需求生成主键的时刻
将此值加1作为主键.
这种方法大概产生的问题是:假如当前有多个实例拜候同一个数据库,那么由于各个实例各自保护主键状况,差别实例大概生成一样的主键,从而造成主键反复非常.因此,假好像一数据库有多个实例拜候,此方法必须避免利用.
5) identity
采取数据库供应的主键生成机制.如DB2、SQL Server、MySQL中的主键生成机制.
6) sequence
采取数据库供应的sequence 机制生成主键.如Oralce 中的Sequence.
7) native
由Hibernate按照底层数据库自行判断采取identity、hilo、sequence此中一种作为主键生成方法.
8) uuid.hex
由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键.
9) uuid.string
与uuid.hex 近似,只是生成的主键未举行编码(长度16).在某些数据库中大概呈现问题(如PostgreSQL).
10) foreign
利用外部表的字段作为主键.
普通而言,操纵uuid.hex方法生成主键将供应最好的性能和数据库平台适应性.
别的由于常用的数据库,如Oracle、DB2、SQLServer、MySql 等,都供应了易用的主键生成机制(Auto-Increase 字段大概Sequence).我们可以在数据库供应的主键生成机制上,采取generator-class=native的主键生成方法.不过值得注意的是,一些数据库供应的主键生成机制在效率上未必最佳,大量并发insert数据时大概会惹起表之间的互锁.
数据库供应的主键生成机制,常常是通过在一个内部表中保存当前主键状况(如关于自增型主键而言,此内部表中就保护着当前的最大值和递增量),之后每次插入数据会读取这个最大值,然后加上递增量作为新记录的主键,之后再把这个新的最大值更新回内部表中,这样,一次Insert操作大概招致数据库内部多次表读写操作,同时伴随的还有数据的加锁解锁操作,这对性能产生了较大影响.
因此,关于并发Insert要求较高的系统,举荐采取uuid.hex 作为主键生成机制.
以上是“Hibernate主键生成办法 Key Generator[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |