Hibernate 元素 id生成策略

2021-08-20 10:26:01 字數 963 閱讀 3092

1、increment

對long、int、short的資料列生成自動增長主鍵。這種情況主要用於資料庫中未把**主鍵設定為自增,而又想**主鍵自增時。此方式的實現機制為在當前應用例項中維持乙個變數,以儲存著當前的最大值,之後每次需要生成主鍵的時候將此值加1作為主鍵。

這種方式可能產生的問題是:如果當前有多個例項訪問同乙個資料庫,那麼由於各個例項各自維護主鍵狀態,不同例項可能生成同樣的鍵,從而造成主鍵重複異常。因此,如果同一資料有多個例項(併發量大)訪問,此方式必須避免使用。只有在沒有其他程序往同一張表中插入資料時才能使用。但是它的生成識別符號機制不依賴於底層資料庫系統,所以它適合於所有的資料庫系統。

2、identity

對如sql server 、mysql等支援自動增長列的資料庫,如果資料列的型別時long、short或int,可使用該主鍵生成器來生成自動增長主鍵。但是由於它依賴於底層資料庫,所以要求底層資料庫系統必須支援自動增長字段型別。而且他需要底層資料庫把主鍵定義為自動增長字段型別。

3、native

該生成器依據底層資料庫對自動生成識別符號的支援能力,來選擇使用identity、sequence或hilo識別符號生成器。能自動判斷底層資料庫提供的生成識別符號的機制。適合跨平台開發,即同乙個hibernate應用需要連線多種資料庫的場合。

4、sequence

對如oracle、db2等支援sequence的資料庫,如果資料列的型別時long、short、int,可使用該主鍵生成器生成自動增長主鍵。該識別符號生成器利用底層資料庫提供的序列來生成識別符號。

5、uuid.hex

由hibernate基於128位唯一值產生演算法生成16進製制數(編碼後長度32的字串表示)作為主鍵

6、uuid.string

與uuid.hex類似,只是生成的主鍵未進行編碼(長度16).在某些資料庫中可能出現問題

7、assigned

主鍵由外部程式負責生成,無需hibernate參與

8、hilo

Hibernate的ID生成策略

1.介紹 hibernate是目前最為常用的orm框架,當然也有人會選擇ibatis或者其他的架構.這裡我們著重講hibernate的id生成策略 2.可選的id策略生成方式 1 native auto 根據不同的資料庫採用不同的id生成方式,例如 在sql server中採用identity 在m...

hibernate 中id生成策略

資料庫的設計和操作中,我們通常會給表建立主鍵。主鍵,可以分為自然主鍵和 主鍵。自然主鍵表示 採用具有業務邏輯含義的字段作為表的主鍵。比如在使用者資訊表中,採用使用者的身份證號碼作為主鍵。但是這樣一來,隨著業務邏輯的變化,主鍵就有可能要更改。比如,假設哪天身份證號碼公升級成19,2位,那。主鍵 在表中...

Hibernate的id生成機制

下午學習的過程中遇到乙個問題 很糾結 寫的沒有錯 也能執行就是插不到資料庫裡去,找了很多方法都不行!最後發現 基於xml配置 常見的generator increment 用於long short int型別唯一標識,只有在沒有其他程序往同一張表中插入資料時才能使用,在集群下不能使用 identit...