posts - 6, comments - 8, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          1. Assigned
          ???? 主鍵由應(yīng)用邏輯產(chǎn)生,數(shù)據(jù)交由Hibernate保存時,主鍵值已經(jīng)設(shè)置完畢,無需Hibernate干預(yù)。
          2.? hilo
          ??? 通過hi/lo算法實(shí)現(xiàn)的主鍵生成機(jī)制,需要額外的數(shù)據(jù)庫表保存主鍵生成歷史狀態(tài).
          3.? seqhilo
          ??? 與hilo類似,通過hi/lo算法實(shí)現(xiàn)的主鍵生成機(jī)制,只是主鍵歷史狀態(tài)保存在Sequence中,適用于支持Sequence的數(shù)據(jù)庫,如Oracle。
          4.? increment
          ??? 主鍵按數(shù)值順序遞增。此方式的實(shí)現(xiàn)機(jī)制為在當(dāng)前應(yīng)用實(shí)例中維持一個變量,以保存著當(dāng)前的最大值,之后每次需要生成主鍵的時候?qū)⒋酥导?作為主鍵。這種方式可能產(chǎn)生的問題是:如果當(dāng)前有多個實(shí)例訪問同一個數(shù)據(jù)庫,那么由于各個實(shí)例各自維護(hù)主鍵狀態(tài),不同實(shí)例可能生成同樣的主鍵,從而造成主鍵重復(fù)異常。因此,如果同一數(shù)據(jù)庫有多個實(shí)例訪問,此方式必須避免使用。
          5.? identity
          ??? 采用數(shù)據(jù)庫提供的主鍵生成機(jī)制,如SQL Server, MySQL中的自增主鍵生成機(jī)制。
          6.? sequence
          ??? 采用數(shù)據(jù)庫提供的sequence機(jī)制生成主鍵.如Oralce Sequence.
          7.? native
          ??? 由Hibernate根據(jù)數(shù)據(jù)庫適配器中的定義,自動采用identity, hilo, sequence的其中一種作為主鍵生成方式。
          8.? uuid.hex
          ??? 由Hibernate基于,28位惟一值產(chǎn)生算法,根據(jù)當(dāng)前設(shè)備IP,時間,JVM啟動時間,內(nèi)部自增量等4個參數(shù)生成十六進(jìn)制數(shù)值(編碼后以長度為32位的字符串表示)作為主鍵。這種算法在最大程度上保證了產(chǎn)生ID的惟一性,即使是在多實(shí)例并發(fā)運(yùn)行的情況下。當(dāng)然,重復(fù)的概率在理論上依然存在,只是實(shí)在過于渺茫(可能數(shù)萬年才出現(xiàn)一次)。一般而言,利用uuid.hex方式生成主鍵將提供最好的數(shù)據(jù)插入性能和數(shù)據(jù)庫平臺適應(yīng)性。
          9.? uuid.string·
          ??? 與uuid.hex類似,只是生成的主鍵未進(jìn)行編碼(長度16位)。在某些數(shù)據(jù)庫中可能出現(xiàn)問題(如PostgreSQL )。
          10. foreign
          ??? 使用外部表的字段作為主鍵,此類主鍵生成機(jī)制我們將在數(shù)據(jù)關(guān)聯(lián)部分結(jié)合實(shí)例進(jìn)行講解。
          11. select
          ??? Hibernate 3中新引入的主鍵獲取機(jī)制,主要針對遺留系統(tǒng)的改造工程。在一些早期系統(tǒng)中,主鍵可能依賴觸發(fā)器生成,即當(dāng)數(shù)據(jù)庫發(fā)生insert操作時,通過觸發(fā)器捕獲這一操作,并為主鍵賦值。此時,我們就必須在插入數(shù)據(jù)之后,再次通過某一識別字段讀取己插入的數(shù)據(jù),獲取其主鍵數(shù)據(jù)。
          <轉(zhuǎn)自:深入淺出hibernate>


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 介休市| 和平县| 图片| 锦屏县| 印江| 曲阳县| 合肥市| 太仓市| 扎赉特旗| 荆州市| 合阳县| 谢通门县| 宜章县| 建瓯市| 井陉县| 长沙县| 莱芜市| 剑河县| 宝清县| 万安县| 顺义区| 横峰县| 东方市| 隆尧县| 寻乌县| 贡嘎县| 拜城县| 桐庐县| 定边县| 囊谦县| 健康| 额敏县| 顺义区| 大同市| 安平县| 静宁县| 新田县| 澳门| 积石山| 金门县| 霍林郭勒市|