日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate中的id特殊属性hilo剖解(多用于继承关系)

發(fā)布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate中的id特殊属性hilo剖解(多用于继承关系) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

hilo是hibernate中最長用的一種生成方式,hibernate給出了hilo 和 seqhilo兩種生成器,他們的分別向下面一樣配置
Hilo配置代碼
<id name="id" type="int" column="id">
<generator class="hilo">
<param name="table">wasw100_hilo_tbl</param>
<param name="column">next_value</param>
<param name="max_lo">100</param>
</generator>
</id>


Seqhilo配置代碼
<id name="id" type="int" column="id">
<generator class="seqhilo">
<param name="sequence">hi_value</param>
<param name="max_lo">100</param>
</generator>
</id>

?

seqhilo生成器需要數(shù)據(jù)庫對sequence的支持,這里只討論更通用的hilo生成器。

如果你按照下面的方式配置
Xml代碼
<generator class="hilo">
<param name="max_lo">100</param>
</generator>

這樣的缺省配置對應的數(shù)據(jù)庫表是:hibernate_unique_key,對應的數(shù)據(jù)庫字段是:next_hi。next_hi必須有一條記錄否則會出現(xiàn)錯誤。

?

討論前先說明幾個簡寫的意義,以最上面那個配置為例:

hi: 高值--從數(shù)據(jù)庫wasw100_hilo_tbl讀取的next_value值

lo: 低值--hibe自動維護,從0到max_lo(看下面)

max_lo: 配置文件中<param name="max_lo">100</param>的值,這里是100

?

hibernate根據(jù)hilo生成器生成主鍵的過程:

1.讀取并記錄數(shù)據(jù)庫的wasw100_hilo_tbl表中next_value字段的值,數(shù)據(jù)庫中此字段值加1保存

2.hibernate取得lo值(0到max_lo-1循環(huán),lo到max_lo時,執(zhí)行步驟1,然后lo繼續(xù)從0到max_lo循環(huán))

取得hi值和lo值后,根據(jù)下面的公式計算主鍵值:

hi*(max_lo+1)+lo;

?

例如:
hi初始為2,max_lo為3
生成的值依次是:
讀取hi為2,寫到數(shù)據(jù)庫為3
2*(3+1)+0=8
2*(3+1)+1=9
2*(3+1)+2=10
2*(3+1)+3=11
這有次讀寫表wasw100_hilo_tbl操作,hi變?yōu)?,數(shù)據(jù)庫成為4
3*(3+1)+0=12
3*(3+1)+1=13

關(guān)閉數(shù)據(jù)庫,下次打開時,讀取hi值為4,數(shù)據(jù)庫變?yōu)?
4*(3+1)+0=16

?

但是有一種特殊情況,就是hi是0的時候,那么第一個值不是0*(max_lo+1)+0=0
而是lo跳過0從1開始,直接是1、2、3……

?

那max_lo配置多大合適呢?

這要根據(jù)具體情況而定,如果系統(tǒng)一般不重啟,而且需要用此表建立大量的主鍵,可以吧max_lo配置大一點,這樣可以減少讀取數(shù)據(jù)表wasw100_hilo_tbl的次數(shù),提高效率;反之,如果服務器經(jīng)常重啟,可以吧max_lo配置小一點,可以避免每次重啟主鍵之間的間隔太大,造成主鍵值主鍵不連貫。

轉(zhuǎn)載于:https://www.cnblogs.com/yangkai-cn/archive/2012/12/25/4017001.html

總結(jié)

以上是生活随笔為你收集整理的hibernate中的id特殊属性hilo剖解(多用于继承关系)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。