Hibernate主鍵生成器說明

2021-08-25 20:11:01 字數 2219 閱讀 4566

自然主鍵:具有業務意義的字段作為主鍵,例如學生表中用學號作為主鍵

**主鍵:定義的、專門用來標記記錄的id

,它除了用來標識記錄外,不具有

任何的業務意義

id

生成器名稱

說明

assigned

應用程式自身對id

賦值。當設定

時,應用程式自身需要負責主鍵id

的賦值,一般應用在主鍵為自然主鍵時。例如xh

為主鍵時,當新增乙個學生資訊時,就需要程式設計師自己設定學號的值,這時就需要應用該id

生成器。

native

由資料庫對id

賦值。當設定

時,資料庫負責主鍵id

的賦值,最常見的是int

型的自增型主鍵。例如,在sql server

中建立表的id

欄位為identity

,配置了該生成器,程式設計師就不用為該主鍵設定值,它會自動設定。

hilo

通過hi/lo

演算法實現的主鍵生成機制,需要額外的資料庫表儲存主鍵生成歷史狀態。

seqhilo

與hi/lo

類似,通過hi/lo

演算法實現的主鍵生成機制,只是主鍵歷史狀態儲存在sequence

中,適用於支援sequence

的資料庫,如oracle。

increment

主鍵按數值順序遞增。此方式的實現機制為在當前應用例項中維持乙個變數,以儲存當前的最大值,之後每次需要生成主鍵的時候將此值加1

作為主鍵。這種方式可能產生的問題是:如果當前有多個例項訪問同乙個資料庫,由於各個例項各自維護主鍵狀態,不同例項可能生成同樣的主鍵,從而造成主鍵重複異常。因此,如果同乙個資料庫有多個例項訪問,這種方式應該避免使用。

identity

採用資料庫提供的主鍵生成機制,如sql server

、mysql

中的自增主鍵生成機制。

sequence

採用資料庫提供的sequence

機制生成主鍵,如oracle sequence

uuid.hex

由hibernate

基於128

位唯一值產生演算法,根據當前裝置ip

、時間、jvm

啟動時間、內部自增量等4

個引數生成十六進製制數值(編碼後長度為32

位的字串表示)作為主鍵。即使是在多例項併發執行的情況下,這種演算法在最大程度上保證了產生id

的唯一性。當然,重複的概率在理論上依然存在,只是概率比較小。一般而言,利用uuid.hex

方式生成主鍵將提供最好的資料插入效能和資料平台適應性。

uuid.string

與uuid.hex

類似,只是對生成的主鍵進行編碼(長度為16

位)。在某些資料庫中可能出現問題。

foreign

使用外部表的字段作為主鍵。該主鍵一般應用在表與表之間的關係上,會在後面的表對應關係上進一步講解。

select

hibernate 3

新引入的主鍵生成機制,主要針對遺留系統的改造工程。

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主鍵生成器說明

自然主鍵 具有業務意義的字段作為主鍵,例如學生表中用學號作為主鍵 主鍵 定義的 專門用來標記記錄的id 它除了用來標識記錄外,不具有 任何的業務意義 id 生成器名稱 說明 assigned 應用程式自身對id 賦值。當設定 時,應用程式自身需要負責主鍵id 的賦值,一般應用在主鍵為自然主鍵時。例如...