设为首页 加入收藏

TOP

Hibernate中使用<generator>设置主键生成方式最通用、最高效的方法
2015-02-03 01:35:23 来源: 作者: 【 】 浏览:34
Tags:Hibernate 使用 < generator> 设置 生成 方式 通用 高效 方法

Hibernate中使用设置主键生成方式最通用、最高效的方法是什么呢?


答案是uuid.hex算法!


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


UUID包含:IP地址,JVM启动时间(精确到1/4秒),系统时间和一个计数器值(在JVM中唯一)。在Java代码中不可能获得MAC地址或者内存地址,所以这已经是我们在不使用JNI的前提下能做的最好实现了!


不过值得注意的是,一些数据库提供的主键生成机制在效率上未必最佳,大量并发insert数据时可能会引起表之间的互锁。数据库提供的主键生成机制,往往是通过在一个内部表中保存当前主键状态(如对于自增型主键而言,此内部表中就维护着当前的最大值和递增量),接着每次插入数据会读取这个最大值,然后加上递增量作为新纪录的主键,之后再把这个新的最大值更新回内部表中。这样,一次Insert操作可能导致数据库内部多次表读写操作,同时伴随的还有数据的加锁解锁操作,这对性能产生了较大影响。因此,对于并发Insert要求较高的系统,推荐采用uuid.hex作为主键生成机制。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux 设备驱动 ====> 字符驱动 下一篇Java 图片格式转换(包括bmp-->..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: