天天看點

NHibernate主鍵生成方式,映射檔案的generator節點

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 的字元串表示)作為主鍵。