Hibernate主鍵生成方式 Key Generator
主鍵産生器
可選項說明:
1) assigned
主鍵由外部程式負責生成,無需Hibernate參與。
2) hilo
通過hi/lo 算法實作的主鍵生成機制,需要額外的資料庫表儲存主
鍵生成曆史狀态。
3) seqhilo
與hilo 類似,通過hi/lo 算法實作的主鍵生成機制,隻是主鍵曆史
狀态儲存在Sequence中,适用于支援Sequence的資料庫,如Oracle。
4) increment
主鍵按數值順序遞增。此方式的實作機制為在目前應用執行個體中維持
一個變量,以儲存着目前的最大值,之後每次需要生成主鍵的時候
将此值加1作為主鍵。
這種方式可能産生的問題是:如果目前有多個執行個體通路同一個資料
庫,那麼由于各個執行個體各自維護主鍵狀态,不同執行個體可能生成同樣
的主鍵,進而造成主鍵重複異常。是以,如果同一資料庫有多個實
例通路,此方式必須避免使用。
5) identity
采用資料庫提供的主鍵生成機制。如DB2、SQL Server、MySQL
中的主鍵生成機制。
6) sequence
采用資料庫提供的sequence 機制生成主鍵。如Oralce 中的
Sequence。
7) native
由Hibernate根據底層資料庫自行判斷采用identity、hilo、sequence
其中一種作為主鍵生成方式。
8) uuid.hex
由Hibernate基于128 位唯一值産生算法生成16 進制數值(編碼後
以長度32 的字元串表示)作為主鍵。