自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全面講解Hibernate主鍵

開(kāi)發(fā) 后端
這里介紹Hibernate主鍵,包括介紹Native主鍵生成方式會(huì)根據(jù)不同的底層數(shù)據(jù)庫(kù)自動(dòng)選擇Identity、Sequence、Hilo主鍵生成方式。

Hibernate有很多值得學(xué)習(xí)的地方,這里我們主要介紹Hibernate主鍵,包括介紹Assigned方式、Increment方式和Foreign GUID等方面。

Hibernate主鍵介紹

1.Assigned

Assigned方式由程序生成主鍵值,并且要在save()之前指定否則會(huì)拋出異常

特點(diǎn):主鍵的生成值完全由用戶決定,與底層數(shù)據(jù)庫(kù)無(wú)關(guān)。用戶需要維護(hù)主鍵值,在調(diào)用session.save()之前要指定主鍵值。

2.Hilo

Hilo使用高低位算法生成主鍵,高低位算法使用一個(gè)高位值和一個(gè)低位值,然后把算法得到的兩個(gè)值拼接起來(lái)作為數(shù)據(jù)庫(kù)中的***主鍵。Hilo方式需要額外的數(shù)據(jù)庫(kù)表和字段提供高位值來(lái)源。默認(rèn)請(qǐng)況下使用的表是

hibernate_unique_key,默認(rèn)字段叫作next_hi。next_hi必須有一條記錄否則會(huì)出現(xiàn)錯(cuò)誤。

特點(diǎn):需要額外的數(shù)據(jù)庫(kù)表的支持,能保證同一個(gè)數(shù)據(jù)庫(kù)中主鍵的***性,但不能保證多個(gè)數(shù)據(jù)庫(kù)之間主鍵的***性。Hilo主鍵生成方式由Hibernate 維護(hù),所以Hilo方式與底層數(shù)據(jù)庫(kù)無(wú)關(guān),但不應(yīng)該手動(dòng)修改hi/lo算法使用的表的值,否則會(huì)引起主鍵重復(fù)的異常。

3.Increment

Increment方式對(duì)主鍵值采取自動(dòng)增長(zhǎng)的方式生成新的主鍵值,但要求底層數(shù)據(jù)庫(kù)的支持Sequence。如Oracle,DB2等。需要在映射文件xxx.hbm.xml中加入Increment標(biāo)志符的設(shè)置。

特點(diǎn):由Hibernate本身維護(hù),適用于所有的數(shù)據(jù)庫(kù),不適合多進(jìn)程并發(fā)更新數(shù)據(jù)庫(kù),適合單一進(jìn)程訪問(wèn)數(shù)據(jù)庫(kù)。不能用于群集環(huán)境。

4.Identity

Identity當(dāng)時(shí)根據(jù)底層數(shù)據(jù)庫(kù),來(lái)支持自動(dòng)增長(zhǎng),不同的數(shù)據(jù)庫(kù)用不同的主鍵增長(zhǎng)方式。

特點(diǎn):與底層數(shù)據(jù)庫(kù)有關(guān),要求數(shù)據(jù)庫(kù)支持Identity,如MySQl中是 auto_increment, SQL Server 中是Identity,支持的數(shù)據(jù)庫(kù)有MySql、SQL Server、DB2、Sybase和HypersonicSQL。 Identity無(wú)需Hibernate和用戶的干涉,使用較為方便,但不便于在不同的數(shù)據(jù)庫(kù)之間移植程序。

5.Sequence

Sequence需要底層數(shù)據(jù)庫(kù)支持Sequence方式,例如Oracle數(shù)據(jù)庫(kù)等

特點(diǎn):需要底層數(shù)據(jù)庫(kù)的支持序列,支持序列的數(shù)據(jù)庫(kù)有DB2、PostgreSql、Qracle、SAPDb等在不同數(shù)據(jù)庫(kù)之間移植程序,特別從支持序列的數(shù)據(jù)庫(kù)移植到不支持序列的數(shù)據(jù)庫(kù)需要修改配置文件

6.Native

Native主鍵生成方式會(huì)根據(jù)不同的底層數(shù)據(jù)庫(kù)自動(dòng)選擇Identity、Sequence、Hilo主鍵生成方式。

特點(diǎn):根據(jù)不同的底層數(shù)據(jù)庫(kù)采用不同的主鍵生成方式。由于Hibernate會(huì)根據(jù)底層數(shù)據(jù)庫(kù)采用不同的映射方式,因此便于程序移植,項(xiàng)目中如果用到多個(gè)數(shù)據(jù)庫(kù)時(shí),可以使用這種方式。

7.UUID

UUID使用128位UUID算法生成主鍵,能夠保證網(wǎng)絡(luò)環(huán)境下的主鍵***性,也就能夠保證在不同數(shù)據(jù)庫(kù)及不同服務(wù)器下主鍵的***性。

特點(diǎn);能夠保證數(shù)據(jù)庫(kù)中的主鍵***性,生成的主鍵占用比較多的存貯空間

8.Foreign GUID

Foreign用于一對(duì)一關(guān)系中。GUID主鍵生成方式使用了一種特殊算法,保證生成主鍵的***性,支持SQL Server和MySQL。以上介紹Hibernate主鍵。

【編輯推薦】

  1. Hibernate連接配置方法剖析
  2. Hibernate Session實(shí)例剖析
  3. 淺析Hibernate Callback接口
  4. Hibernate Session緩存概述
  5. Hibernate修改addMate方法
責(zé)任編輯:佚名 來(lái)源: 博客園
相關(guān)推薦

2009-09-29 10:12:03

Hibernate A

2009-09-23 15:50:21

Hibernate u

2009-09-24 11:04:56

Hibernate二級(jí)

2009-09-29 17:11:23

Hibernate T

2009-09-23 14:23:51

Hibernate主鍵

2012-02-03 10:07:04

HibernateJava

2009-09-25 13:33:43

Hibernate主鍵

2009-09-25 09:46:03

Hibernate s

2009-09-23 17:41:05

Hibernate事務(wù)

2009-09-28 10:24:58

Hibernate基礎(chǔ)

2009-06-29 08:56:49

Hibernate主鍵生成主鍵

2009-09-25 16:08:12

Hibernate f

2009-09-24 18:11:56

Hibernate q

2009-09-29 14:03:14

Hibernate數(shù)據(jù)

2009-09-28 11:30:53

Hibernate核心

2009-09-22 09:31:15

Hibernate主鍵

2009-09-24 13:49:31

Hibernate自增

2009-09-25 16:27:33

Hibernate S

2009-09-28 13:49:44

Hibernate Q

2009-09-28 16:54:34

Hibernate示例
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)