Hibernate主鍵遞增策略

主鍵遞增策略

JPA提供的四種用法:TABLE,SEQUENCE,IDENTITY,AUTO

TABLE:使用一個(gè)特定的數(shù)據(jù)庫(kù)表格來(lái)保存主鍵
SEQUENCE:根據(jù)底層數(shù)據(jù)庫(kù)的序列來(lái)生成主鍵,條件是數(shù)據(jù)庫(kù)支持序列,主要是Oracle
IDENTITY:主鍵由數(shù)據(jù)庫(kù)自動(dòng)生成(主要是自動(dòng)增長(zhǎng)型,mysql)
AUTO:主鍵由程序控制

Hibernate主鍵策略生成器hibernate提供多種主鍵生成策略,有點(diǎn)是類似于JPA 有的是hibernate特有:

native: 對(duì)于oracle采用sequence方式,對(duì)于 MySQL和sql server采用identity(自增主鍵生成機(jī)制) native就是將主鍵的生成工作交由數(shù)據(jù)庫(kù)完成
uuid: 采用128位的uuid算法生成主鍵,uuid被編碼為一個(gè)32位16進(jìn)制數(shù)字的字符串占用空間大(字符串類型)
identity:使用SQL Server和MySQL的自增字段,這個(gè)方法不能放到Oracle中,Oracle不支持自增字段,要設(shè)定sequence

sequence: 調(diào)用底層數(shù)據(jù)庫(kù)的序列來(lái)生成主鍵,要設(shè)定序列名 不然hibernate無(wú)法找到increment: 插入數(shù)據(jù)的時(shí)候hibernate會(huì)給主鍵添加一個(gè)自增的主鍵,但是一個(gè)hibernate實(shí)例就維護(hù)一個(gè)計(jì)數(shù)器,所以在多個(gè)實(shí)例運(yùn)行的時(shí)候不能使用這個(gè)方法foreign: 使用另外一個(gè)相關(guān)聯(lián)的對(duì)象的主鍵,通常和<one-to-one>聯(lián)系起來(lái)使用。

guid: 采用數(shù)據(jù)庫(kù)底層的guid算法機(jī)制。對(duì)應(yīng)MySQl的uuid()函數(shù) SQL Server的newid()函數(shù) Oracle的sys_guid()函數(shù)

參考文章:http://blog.csdn.net/itmyhome1990/article/details/7460378

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容