hibernate的主鍵生成器策略

2021-09-01 11:31:20 字數 1224 閱讀 7659

我們都知道hibernate提供相應的api能自動生成資料庫表,說到表,一定會設計到的乙個概念就是主鍵,主鍵是由程式自動生成的,不應該由使用者自己輸入,那麼hibernate在往表中填充資料庫時,主鍵是怎麼生成的那,hibernat提供了主鍵生成策略

第一種:assigned主鍵策略程式設計師自己手動新增,因為它不能自動生成(資料型別不限、儲存前必須賦值)

<?xml version="1.0" encoding="utf-8"?>

第二種 :identity(標識列/自動增長) 主鍵 生成策略 identity(標識列/自動增長) 由資料庫控制 且id在資料庫是自增長 

這樣 id就不用再賦值  但是id必須是數字型別的-

<?xml version="1.0" encoding="utf-8"?>

第三種 :uuid.hex會自動生成16進製制uuid主鍵,由hibernate控制 ,如果將id設定為這種策略,那麼實體類id屬性必須要定義成字串string型別

<?xml version="1.0" encoding="utf-8"?>

第四種: increment 由hibernate控制 ,當新增資料到mysql資料庫時不需要設定id的值  但是id必須是數字型的

<?xml version="1.0" encoding="utf-8"?>

sequence

只適用於支援sequence機制生成主鍵的資料庫,主鍵值由資料庫生成,如mysql就不支援,oracle就支援

native

native由hibernate根據使用的資料庫自行判斷採用identity、sequence其中一種作為主鍵生成方式,靈活性很強,這樣以來如果乙個專案中使用多個資料庫時,就可以使用這種方式

最後在說一下它們對資料庫的依賴性:

1):uuid,assigned:對資料庫無依賴

2):identity:依賴mysql或sql server,主鍵值不由hibernate維護

3):sequence:適合於oracle等支援序列的dbms,主鍵值不由hibernate維護,由序列產生

4):native:根據底層資料庫的具體特性選擇適合的主鍵生成策略,如果是mysql或sqlserver,選擇identity,如果是oracle,選擇sequence

hibernate 主鍵生成器

hibernate的主鍵生成器 generator元素 表示了乙個主鍵生成器,它用來為持久化類例項生成唯一的標識 1.1 程式設計師自己控制 assigned 1.2 資料庫控制 identity 標識列 自動增長 sequence 1.3 hibernate控制 increment uuid uu...

hibernate主鍵生成器

hibernate的主鍵生成器 generator元素 表示了乙個主鍵生成器,它用來為持久化類例項生成唯一的標識 uitl包裡 工具類 功能 1.簡化 2.測試相關配置是否成功 package com.zking.two.util import org.hibernate.session impor...

hibernate的主鍵生成器

1 程式設計師自己控制 assigned assigned資料庫主鍵增長方式,主鍵必須是手動分配的,如果不分配,就出錯了。2 資料庫控制 identity 標識列 自動增長 sequence 3 hibernate控制 increment uuid uuid.hex 其它 native 主鍵生成器要...