Hibernate主鍵生成策略及選擇

2021-09-19 19:29:50 字數 683 閱讀 1293

1 .increment:適用於short,int,long作為主鍵,不是使用資料庫自動增長機制

這是hibernate中提供的一種增長機制

在程式執行時,先進行查詢:select max(id) from user;

再進行插入:或得最大值+1作為新的記錄的主鍵

問題:不能在集群環境下或者有併發訪問的情況下使用

2 .identity 適用於short,int,long作為主鍵,但是這個必須使用在有自動增長機制的資料庫中,採用的是資料庫底層的自動增長機制

底沉使用的是資料庫的自動增長(auto_increment),像oracle資料庫沒有自動增長

3.sequence 適用於short,int,long作為主鍵,底層使用的是序列的增長方式

4.native本地策略,根據底層資料庫不同,自動選擇適用於該資料庫的生成策略(short int long)

如果底層使用的是mysql沒資料庫相當於 identity

如果使用的oracle資料庫,相當於sequence

5.uuid,適用於char,varchar型別作為主鍵.

使用隨機的字串作為主鍵

6.assigned 主鍵自己維護,不使用hibernate維護

總結:使用時,如果主鍵是short,int long型別,採用native主鍵生成策略,如果是字串,使用uuid主鍵生成策略

Hibernate主鍵生成策略

hibernate主鍵生成策略 1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援...

Hibernate主鍵生成策略

1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援自增字段,要設定sequence...

hibernate主鍵生成策略

文章摘抄至 1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援自增字段,要設定se...