hibernate中主键生成机制hi/lo算法说明

来源:互联网 发布:逛淘宝需要多少流量 编辑:程序博客网 时间:2024/06/05 00:50

hilo(高低位方式high low)是hibernate中最常用的一种生成方式,需要一张额外的表保存hi的值。保存hi值的表至少有一条记录(只与第一条记录有关),否则会出现错误。

<id name="id" column="id"><generator class="hilo"><param name="table">hibernate_hilo</param><param name="column">next_hi</param><param name="max_lo">100</param></generator></id>

hilo生成器生成主键的过程(以hibernate_unique_key表,next_hi列为例):

1. 获得hi值:读取并记录数据库的hibernate_unique_key表中next_hi字段的值,数据库中此字段值加1保存。

2. 获得lo值:从0max_lo循环取值,差值为1,当值为max_lo值时,重新获取hi值,然后lo值继续从0max_lo循环。

3. 取得hi和lo值后,根据公式 hi * (max_lo + 1) + lo计算生成主键值。


hi值是0的时候,那么第一个值不是0*(max_lo+1)+0=0,而是lo跳过01开始,直接是123……


引用文章:

http://www.iteye.com/topic/472106

http://www.cnblogs.com/kakafra/archive/2012/09/16/2687569.html

0 0