JPA的主鍵產生策略

2021-09-01 08:25:49 字數 984 閱讀 5937

[size=medium]@generatedvalue:主鍵的產生策略,通過strategy屬性指定。

主鍵產生策略通過generationtype來指定。generationtype是乙個列舉,它定義了主鍵產生策略的型別。

1、auto 自動選擇乙個最適合底層資料庫的主鍵生成策略。如mysql會自動對應auto increment。這個是預設選項,即如果只寫@generatedvalue,等價於@generatedvalue(strategy=generationtype.auto)。

2、identity 表自增長字段,oracle不支援這種方式。

3、sequence 通過序列產生主鍵,mysql不支援這種方式。

4、table 通過表產生主鍵,框架藉由表模擬序列產生主鍵,使用該策略可以使應用更易於資料庫移植。不同的jpa實現商生成的表名是不同的,如 openjpa生成openjpa_sequence_table表,hibernate生成乙個hibernate_sequences表,而toplink則生成sequence表。這些表都具有乙個序列名和對應值兩個字段,如seq_name和seq_count。

在我們的應用中,一般選用@generatedvalue(strategy=generationtype.auto)這種方式,自動選擇主鍵生成策略,以適應不同的資料庫移植。

如果使用hibernate對jpa的實現,可以使用hibernate對主鍵生成策略的擴充套件,通過hibernate的@genericgenerator實現。

@genericgenerator(name = "system-uuid", strategy = "uuid") 宣告乙個策略通用生成器,name為"system-uuid",策略strategy為"uuid"。

@generatedvalue(generator = "system-uuid") 用generator屬性指定要使用的策略生成器。

這是我在專案中使用的一種方式,生成32位的字串,是唯一的值。最通用的,適用於所有資料庫。[/size]

JPA的主鍵產生策略

generatedvalue 主鍵的產生策略,通過strategy屬性指定。主鍵產生策略通過generationtype來指定。generationtype是乙個列舉,它定義了主鍵產生策略的型別。1 auto 自動選擇乙個最適合底層資料庫的主鍵生成策略。如mysql會自動對應auto increme...

JPA的主鍵產生策略

generatedvalue 主鍵的產生策略,通過strategy屬性指定。主鍵產生策略通過generationtype來指定。generationtype是乙個列舉,它定義了主鍵產生策略的型別。1 auto 自動選擇乙個最適合底層資料庫的主鍵生成策略。如mysql會自動對應auto increme...

JPA的主鍵產生策略

generatedvalue 主鍵的產生策略,通過strategy屬性指定。主鍵產生策略通過generationtype來指定。generationtype是乙個列舉,它定義了主鍵產生策略的型別。1 auto 自動選擇乙個最適合底層資料庫的主鍵生成策略。如mysql會自動對應auto increme...