Hibernate generator小结
“assigned”?
???
主鍵由外部程序負(fù)責(zé)生成,在?? save()?? 之前指定一個(gè)。????
?????
???
“hilo”?
???
通過hi/lo?? 算法實(shí)現(xiàn)的主鍵生成機(jī)制,需要額外的數(shù)據(jù)庫(kù)表或字段提供高位值來源。?????
?????
???
“seqhilo”?
???
與hilo?? 類似,通過hi/lo?? 算法實(shí)現(xiàn)的主鍵生成機(jī)制,需要數(shù)據(jù)庫(kù)中的?? Sequence,適用于支持?? Sequence?? 的數(shù)據(jù)庫(kù),如Oracle。?????
?????
???
“increment”?
???
主鍵按數(shù)值順序遞增。此方式的實(shí)現(xiàn)機(jī)制為在當(dāng)前應(yīng)用實(shí)例中維持一個(gè)變量,以保存著當(dāng)前的最大值,之后每次需要生成主鍵的時(shí)候?qū)⒋酥导?作為主鍵。這種方式可能產(chǎn)生的問題是:不能在集群下使用。?????
?????
???
“identity”?
???
采用數(shù)據(jù)庫(kù)提供的主鍵生成機(jī)制。如DB2、SQL?? Server、MySQL?? 中的主鍵生成機(jī)制。?????
?????
???
“sequence”?
???
采用數(shù)據(jù)庫(kù)提供的?? sequence?? 機(jī)制生成主鍵。如?? Oralce?? 中的Sequence。?????
?????
???
“native”?
???
由?? Hibernate?? 根據(jù)使用的數(shù)據(jù)庫(kù)自行判斷采用?? identity、hilo、sequence?? 其中一種作為主鍵生成方式。?
???
?????
???
“uuid.hex”?
???
由?? Hibernate?? 基于128?? 位?? UUID?? 算法?? 生成16?? 進(jìn)制數(shù)值(編碼后以長(zhǎng)度32?? 的字符串表示)作為主鍵。
???
???
“uuid.string”?
???
與uuid.hex?? 類似,只是生成的主鍵未進(jìn)行編碼(長(zhǎng)度16),不能應(yīng)用在?? PostgreSQL?? 數(shù)據(jù)庫(kù)中。
?????
???
“foreign”?
???
使用另外一個(gè)相關(guān)聯(lián)的對(duì)象的標(biāo)識(shí)符作為主鍵。
<id>元素中的<generator>用來為該持久化類的實(shí)例生成唯一的標(biāo)識(shí),hibernate提供了很多內(nèi)置的實(shí)現(xiàn)。
Increment:由hibernate自動(dòng)遞增生成標(biāo)識(shí)符,用于為long, short或者int類型生成唯一標(biāo)識(shí)。?
identity :由底層數(shù)據(jù)庫(kù)生成標(biāo)識(shí)符(自動(dòng)增長(zhǎng)),返回的標(biāo)識(shí)符是 long, short 或者int類型的。
sequence :hibernate根據(jù)底層數(shù)據(jù)庫(kù)序列生成標(biāo)識(shí)符,返回的標(biāo)識(shí)符 是long, short或者 int類型的。
hilo???? :使用一個(gè)高/低位算法來高效的生成long, short 或者int類型的標(biāo)識(shí)符。
uuid.hex :用一個(gè)128-bit的UUID算法生成32位字符串類型的標(biāo)識(shí)符。?
native?? :根據(jù)底層數(shù)據(jù)庫(kù)的能力選擇identity, sequence 或者h(yuǎn)ilo中的一個(gè)。?
assigned :讓應(yīng)用程序在save()之前為對(duì)象分配一個(gè)標(biāo)示符。?
foreign :使用另外一個(gè)相關(guān)聯(lián)的對(duì)象的標(biāo)識(shí)符。和<one-to-one>聯(lián)合一起使用。
總結(jié)
以上是生活随笔為你收集整理的Hibernate generator小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代表建议春节假期至9天:取消调休制度 法
- 下一篇: hibernate 出现Could no