通過annotation來對映hibernate實體的,基於annotation的hibernate主鍵標識為@id,
其生成規則由@generatedvalue設定的.這裡的@id和@generatedvalue都是jpa的標準用法,
jpa提供四種標準用法,由@generatedvalue的源**可以明顯看出.
target()
@retention(runtime)
public @inte***ce generatedvalue
其中generationtype:
public
enum generationtype
jpa提供的四種標準用法為table,sequence,identity,auto.
1.sequence
實體類中的註解
@id
@generatedvalue(strategy =generationtype.sequence,generator="aaa")
@sequencegenerator(name="aaa", sequencename="seq_payment")
@sequencegenerator定義
@target()
@retention(runtime)
public @inte***ce
sequencegenerator
2.identity
主鍵則由資料庫自動維護,使用起來很簡單
@id
@generatedvalue(strategy = generationtype.identity)
3、auto
預設的配置。如果不指定主鍵生成策略,預設為auto。
@id
@generatedvalue(strategy = generationtype.auto)
hibernate提供多種主鍵生成策略,有點是類似於jpa,有的是hibernate特有,下面列出幾個hibernate比較常用的生成策略:
hibernate提供了多種生成器供選擇,基於annotation的方式通過@genericgenerator實現.
hibernate每種主鍵生成策略提供介面org.hibernate.id.identifiergenerator的實現類,如果要實現自定義的主鍵生成策略也必須實現此介面.
public
inte***ce
identifiergenerator
identifiergenerator提供一generate方法,generate方法返回產生的主鍵.
自定義主鍵生成策略,由@genericgenerator實現。
hibernate在jpa的基礎上進行了擴充套件,可以用一下方式引入hibernate獨有的主鍵生成策略,就是通過@genericgenerator加入的。
比如說,jpa標準用法
@id
@generatedvalue(generationtype.auto)
就可以用hibernate特有以下用法來代替:
@id
@generatedvalue(generator = "paymentablegenerator")
@genericgenerator(name = "paymentablegenerator", strategy = "assigned")
@genericgenerator的定義:
@target()
@retention(runtime)
源**如下:
public @inte***ce
genericgenerator ;
}
對於這些hibernate主鍵生成策略和各自的具體生成器之間的關係,在org.hibernate.id.identifiergenerato***ctory中指定了,
static
上面十二種策略,加上native,hibernate一共預設支援十三種生成策略。使用hibernate註解示例如下:
@id
@generatedvalue(generator = "idgenerator")
@genericgenerator(name = "idgenerator", strategy = "identity")
這種完全類似於:
@id
@generatedvalue(strategy=generationtype.identity)
理解JPA註解 GeneratedValue
通過annotation來對映hibernate實體的,基於annotation的hibernate主鍵標識為 id,其生成規則由 generatedvalue設定的.這裡的 id和 generatedvalue都是jpa的標準用法,jpa提供四種標準用法,由 generatedvalue的源 可以...
JPA註解補充
fetchtype.lazy和 fetchtype.eager 什麼區別?1 fetchtype.lazy 懶載入,載入乙個實體時,定義懶載入的屬性不會馬上從資料庫中載入。2 fetchtype.eager 急載入,載入乙個實體時,定義急載入的屬性會立即從資料庫中載入。3 比方 user 類有兩個屬...
JPA註解查詢
1 entity name entityname 必須,name為可選,對應資料庫中一的個表 entity 標識這個pojo是乙個jpa實體 public class users implements serializable 2 table name catalog schema 可選,通常和 e...