Hibernate主鍵生成策略

2022-03-24 11:03:22 字數 1168 閱讀 6391

hibernate主鍵生成策略有很多種,正如設定不同的資料型別一樣,設定不同的主鍵生成策略,也是適用於不同的場景。接下來一一來看不同的生成策略,有什麼作用和優缺點。

identity是底層資料庫生成的識別符號。identity是由資料庫自己生成的,而且這個主鍵必須設定為自增長的,使用identity的前提是資料庫必須支援自增長的型別,如mysql、sql server等,而oracle沒有自增長欄位故不支援。

缺點:由於需要資料庫來維護,會占用資料庫資源。

需要底層資料庫的支援,並由資料庫維護這個sequence序列。支援oracle、db2等資料庫,用於long或short或int型別生成唯一標識。

hibernate_id

hibernate_id 指定sequence的名稱

注意:hibernate生成主鍵時,查詢sequence並賦給主鍵值,主鍵值由資料庫生成,hibernate不負責維護,使用前必須先建立乙個sequence。

根據資料庫自動選擇生成策略,對於mysql、sql server採用identity生成策略;對於oracle,則採用sequence策略。

uuid全程:universally unique identifier 。採用128位演算法生成主鍵,能夠保證網路環境下主鍵唯一性,也能夠保證在不同資料庫及不同服務下主鍵的唯一性。

hibernate在儲存物件時,生成乙個uuid主鍵,保證了唯一性,不用去查詢資料庫,有hibernate自己維護,從而提高了效率,而且由於是跨資料庫的,以後切換資料來源極其方便。

特點:uuid 長度達,唯一性、占用資料庫。

跨資料庫,移植方便。

不用訪問資料庫生成主鍵,效率高。

使用另外乙個相關聯的物件的主鍵作為該物件主鍵。主要用於一對一關係中。

idcard

注:實際中很少採用該方式,這種方式只針對一對一,當需要需要變化,需要改變為一對多非常困難。

hibernate的主鍵生成策略,除了這五種還有assigned,increment,hilo等,但這五種更加常見,我們在現實中用到的最多的uuid,這個方式由hibernate來為主鍵賦值,不是由程式生成,保證了物件識別符號的唯一性與不可變行,而且與其他的需要由資料庫來維護主鍵的生成策略來說效率更高,而且可移植性更高,所以這也是為什麼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...