利用Hibernate Annotation,可以省去編寫hbm映射檔案的麻煩

但是如果要儲存的主鍵類型是字串,例如要以會員帳號作為資料表的主鍵時

光是使用@Id @GeneratedValue來設定是不夠的

必須要使用

@Id @GeneratedValue(generator="[GeneratorName]")
@GenericGenerator(name="[GeneratorName]", strategy = "[GeneratorStrategy]")

這樣就等同於使用映射檔案時的native或是assigned

 

將strategy設定成assigned,主鍵就會由外部程式提供,無須Hibernate產生

以下是Hibernate的主鍵生成方式

1.assigned:

由外部程式提供的主鍵,hibernate不介入

2.hilo:

通過hi/lo 演算法實作的主鍵生成策略,需要額外的資料表保存主鍵生成歷史狀態

3.seqhilo:

與hilo 類似,通過hi/lo 演算法實作的主鍵生成策略,只是主鍵歷史狀態保存在Sequence中,適用於支援Sequence的資料庫,如Oracle

4. increment:
主鍵按數值順序遞增

5.identity
採用資料庫提供的主鍵生成策略自行產生,如DB2、SQL Server、MySQL 

6.sequence
採用資料庫提供的sequence 機制生成主鍵,如Oralce 中的Sequence

7.native:

由hibernate根據資料庫類型自行選擇identity、hilo、sequence其中一種作為主鍵生成策略

8. uuid.hex and uuid.string:

由Hibernate基於128 位UUID演算法生成16 進制數值

hex和string的差別是前者進行編碼以長度32的字串表示,後者未編碼長度只有16

arrow
arrow
    全站熱搜

    sp033730 發表在 痞客邦 留言(0) 人氣()