Hibernate的ID生成策略

1.介紹

Hibernate是目前最爲常用的ORM框架,當然也有人會選擇iBATIS或者其他的架構.這裏我們着重講Hibernate的ID生成策略

 

2.可選的ID策略生成方式

 

(1)native/auto

根據不同的數據庫採用不同的ID生成方式,例如:在SQL Server中採用identity; 在MySQL中採用auto_increment; 在ORACLE中就會採用sequence, 注意hibernate會自動幫你創建一個名字叫hibernate_sequence的序列,不用自己去創建.這也是最常用和省事的.

 

例子:採用xml方式配置

 

例子:採用註解方式(注意只要在id的getter上寫上@Id就可以了,默認就是@GeneratedValue(strategy = GenerationType.AUTO), 另外(strategy = GenerationType.AUTO)也可以不寫.)以下3種方式結果都是一樣.

(a)

(b)

 

 (c)

 

(2)identity

這種策略在採用SQL Server時,相當於SQL Server的identity關鍵字, 不能用在Oracle中.

例子:採用xml配置方式

 

例子:採用註解方式

(3)sequence

當然採用sequence的就是oracle了.生成方式開始已經說過了.如果要指定sequence的名字那麼請看下面兩個例子

例子:採用xml配置

例子:採用註解方式

(4)table

使用一張數據表來管理所有的數據表的主鍵生成,這個最爲麻煩,但是用得好會非常方便,尤其是大型項目,數據表非常多的時候.這裏只舉註解的例子,後說明

 

 說明:

(a)@TableGenerator表示這個表要採用table的id生成方式,括號中的各個參數說明:

(i) name表示生成器的名字,在隨後實體的id中要指明.

(ii)table表示在數據庫中生成的管理id生成策略的表的名字.

(iii)pkColumnName表示主鍵的名字,也就是說記錄每個表主鍵的名字

(iv)pkColumnValue表示主鍵的值,每個表主鍵的值

(v)valueColumnName表示這個表要記錄的主鍵的名字,例如這裏是teacher,那麼在csdn_generator表中就用teacher來記錄主鍵的值

(vi)allocationSize表示每次取得一個主鍵的值之後增長的步長值,這裏是每次遞增1.

(b)@GeneratedValue表示在主鍵中指明具體的id生成策略,,strategy表示要採用的ID生成策略,由於這裏採用的是table,當然就是GenerationType.TABLE了,generator指出id生成器的名字,這裏就是csdnGenerator.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章