Hibernate常見註解說明

2022-01-17 10:21:08 字數 3404 閱讀 4240

1

@entity表示將乙個類宣告為乙個實體的bean(即乙個持久化的pojo類) 23

2.@table表示宣告該實體bean對映指定的表(table),目錄(catalog)和schema的名字45

@id表示宣告了該實體bean的標識屬性,即主鍵67

@column表示宣告了屬性到列的對映。該註解有如下屬性:

84.1:name 可選 列名(預設值為屬性名)

94.2:unique 可選 是否在該列上設定唯一約束(預設為false)

104.3:nullable 可選 是否為空(預設為false)

114.4:insertable 可選 是否作為生成insert語句中的乙個列(預設為true)

124.5:updateable 可選 是否作為生成update語句中的乙個列(預設為true)

134.6:columndefinition 可選 為這個特定的列覆蓋sql ddl片段(可能影響移植)

144.7:table 可選 定義對應的表(預設為主表)

154.8:length 可選 列長度(預設值為255)

164.9:precision 可選 列十進位制進度,預設為0

174.10:scale 可選 如果十進位制數值範圍可用,在此設定

1819

@generatedvalue表示主鍵的生成策略。該註解有如下屬性:

205.1:strategy 指定生成的策略(jpa定義的),預設是generationtype.auto

21generationtype.auto主鍵有程式控制

22generationtype.identity主鍵由資料庫自動生成,常用與sqlserver

23generationtype.sequence根據序列生成主鍵,這個值要與generator一同使用

24generator指定主鍵的生成器(可能是oracle中序列)

25generationtype.table使用乙個特定的資料庫**來儲存主鍵

2627

5.2:@genericgenerator 表示宣告了乙個hibernate的主鍵的生成策略。支援13種生

28成策略。該註解有如下屬性:name(指定生成器的名稱),strategy(指定生成策 略),parameters(得到strategy指定的具體生成器所用到的引數)

29其中13中策略(strategy屬性值)如下:

30native 指將主鍵的生成工作由資料庫完成,很常用.

31uuid 採用128位uuid演算法生成的主鍵,占用空間較大

32hilo要在資料庫中建立一張額外的表,預設表名為hibernate_unque_key,預設 欄位為integer型別,名稱是next_hi(比較少用)

33   assigned 在插入資料的時候主鍵由程式處理(很常用),這是<

generator

>

元素 沒有指定時的預設生成策略。等同於jpa中的auto。

34identity 自動增長,等同於jpa中identity

35select 使用觸發器生成主鍵(主要用於早期的資料庫主鍵生成機制,少用)

36sequence 呼叫謹慎資料庫的序列來生成主鍵,要設定序列名,不然hibernate 無法找到。

37seqhilo 通過hilo演算法實現,但是主鍵歷史儲存在sequence中,適用於支援 sequence的資料庫,如orcale(比較少用)

38increnment 插入資料的時候hibernate會給主鍵新增乙個自增的主鍵,但是乙個 hibernate例項就維護乙個計數器,所以在多個例項執行的時候不能使用這個方法

39   foreign 使用另乙個相關的物件的主鍵。通常和<

one-to-one

>

聯合起來使用

40guid 採用資料庫底層的guid演算法機制,對應mysql的uuid()函式,sql server 的newid()函式,orcale的rawtohex(sys_guid())函式等

41sequence-identity sequence策略的擴充套件,採用立即檢索策略來獲取sequence 值,需要jdbc3.0和jdk4以上(含1.4)版本

42uuid.hex 看uudi,建議用uuid替換

4344

看了這麼多的主鍵生成策略,我自己也快暈了,其實常用的就是oracle主鍵與sqlserver的主鍵生成策略,它們分別表示如下:

45oracle主鍵生成:

46@id

47@generatedvalue(generator = "depgen")

48@genericgenerator(name = "depgen", strategy = "assigned")

49private int deptno;//deptno為oracle資料庫中某部門表的主鍵

5051

sqlserver主鍵生成:

52@id

53@generatedvalue(strategy=generationtype.identity)

54private integer uid;//uid為sqlserver資料庫中某使用者表的使用者id,表示主鍵

5556 6.@onetomany用於設定一對多的關聯,用於配置<

set>

端。cascade屬性有5個值(只有cascadetype.all好用?), 分別是cascadetype.persist(級聯新建)、cascadetype.remove(級聯刪除)、cascadetype.refresh(級聯重新整理)、cascadetype.merge(級聯更新)、cascadetype.all(全部)

5758

targetentity屬性表示目標指向那個類

5960

6162

private set empinfos = new hashset(0);

6364

fetch指定是否延遲載入,值為fetchtype.lazy表示延遲,為fetchtype.eacer表示立即載入。

6566

@manytoone用於多對一的關聯,用於配置如:private deptinfo dept;端。

67如:

68@manytoone(targetentity=deptinfo.class)

69@joincolumn(name="deptno")//這裡的deptno為此表對應的外鍵名

70private deptinfo dept;

7172

@cache用於配置配置快取

7374

75 最後祝大家愉快!

Hibernate常見註解說明

1 entity表示將乙個類宣告為乙個實體的bean 即乙個持久化的pojo類 23 2.table表示宣告該實體bean對映指定的表 table 目錄 catalog 和schema的名字45 id表示宣告了該實體bean的標識屬性,即主鍵67 column表示宣告了屬性到列的對映。該註解有如下屬...

hibernate常用註解說明

1.外來鍵關聯 manytoone joincolumn name ent id nullable false,referencedcolumnname id private prjentinfo entid 企業id 如果不加referencedcolumnname id 可能發生如下異常 cau...

Spring常見的註解說明

component service conctrl用於注入乙個類 autowired用於注入成員變數 方法 建構函式,它是通過byname方式經過依賴注入 transactional用於事務控制的注入 採用spring註解的時候要啟用spring的註解並要重寫sessionfactory 註解配置檔...