1. 程式人生 > >hibernate:主鍵生成策略

hibernate:主鍵生成策略

1.assigned

程式設計師自己控制:不受資料庫的影響(sid自增長也沒用,得程式設計師自己定義)

<generator class="assigned"></generator>

資料型別不限、儲存前必須賦值

2.identity(sql資料庫)

資料庫控制: (sql資料庫)identity(標識列/自動增長) 資料庫控制:受資料庫影響 sid自增長 , sid的資料型別必須為數字 ,無需賦值

3.sequence(oracle資料庫)

資料庫控制:sequence(oracle資料庫) 資料庫控制:受資料庫影響 sid自增長 , sid的資料型別必須為數字 ,無需賦值 預設使hibernate_sequence這個序列, 也可以通過sequence/sequence_name引數賦值

4.hibernate控制:increment uuid/uuid.hex

increment : 由hibernate自動遞增的方式生成識別符號,每次增量為1,優點是適用於所有資料庫,缺點是在叢集環境下可能會出現相同的主鍵值且OID必須為數值型別 uuid/uuid.hex (是由容器自動生成的一個32位的字串,.hex代表的是十六進位制) 32位的字串,無需賦值 OID是String型別而不能是數值型別

5.其它:native

等於identity+sequence 由Hibernate根據底層資料庫自行判斷採用identity,sequence其中一種作為主鍵生成方式。

6.建立主鍵生成器類

實現org.hibernate.id.IdentifierGenerator介面即可,並還可以實現org.hibernate.id.Configurable介面來讀取一些配置資訊

public class MyIdCreate implements IdentifierGenerator{
  	 public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException {
	  //公司名_模組名_時間戳  
	  return "zking_order_"+new SimpleDateFormat("YY-MM-DD hh:mm:ss");
	 }
}