Hibernate的一對多操作

2021-08-08 16:58:15 字數 3168 閱讀 9446

以客戶和聯絡人為例:客戶是一,聯絡人是多

第一步

建立兩個實體類,客戶和聯絡人

第二步

讓兩個實體類之間互相表示

1)在客戶實體類裡面表示多個聯絡人

-

乙個客戶裡面有多個聯絡人

2)在聯絡人實體類裡面表示所屬客戶

-

乙個聯絡人只能屬於乙個客戶

第三步

配置對映關係

1)一般乙個實體類對應乙個對映檔案

2)把對映最基本配置完成

3)在對映檔案中,配置一對多關係

-

在客戶對映檔案中,表示所有聯絡人

-

在聯絡人對映檔案中,表示所屬客戶

第四步

建立核心配置檔案,把對映檔案引入到核心配置檔案中

測試:

級聯操作

1

級聯儲存

1)新增乙個客戶,為這個客戶新增多個聯絡人

2

級聯刪除

1)刪除某乙個客戶,這個客戶裡面的所有的聯絡人也刪除

1

新增客戶,為這個客戶新增乙個聯絡人

1)複雜寫法:

//

演示一對多級聯儲存

@test

publicvoidtestadddemo1()catch(exception e)finally

}

2)簡化寫法

-

一般根據客戶新增聯絡人

第一步

在客戶對映檔案中進行配置

-

在客戶對映檔案裡面

set標籤進行配置

第二步

建立客戶和聯絡人物件,只需要把聯絡人放到客戶裡面就可以了,最終只需要儲存客戶就可以了

//

演示一對多級聯儲存

@test

publicvoidtestadddemo2()catch(exception e)finally

}

1

刪除某個客戶,把客戶裡面所有的聯絡人刪除

2

具體實現

第一步

在客戶對映檔案

set標籤,進行配置

1)使用屬性

cascade

屬性值delete

第二步

在**中直接刪除客戶

1)根據

id查詢物件,呼叫

session

裡面delete

方法刪除

3

執行過程:

1)根據

id查詢客戶

2)根據外來鍵

id值查詢聯絡人

3)把聯絡人外來鍵設定為

null

4)刪除聯絡人和客戶

1

讓lucy

2 inverse

屬性

1)因為

hibernate

雙向維護外來鍵,在客戶和聯絡人裡面都需要維護外來鍵,修改客戶時候修改一次外來鍵,修改聯絡人時候也修改一次外來鍵,造成效率問題

2)解決方式:讓其中的一方不維護外來鍵

-

一對多裡面,讓其中一方放棄外來鍵維護

-

乙個國家有**,國家有很多人,**不能認識國家所有人,國家所有人可以認識**

3)具體實現:

在放棄關係維護對映檔案中,進行配置,在

set標籤上使用

inverse

屬性

Hibernate一對多 雙向

hibernate 雙向關聯就是有 一對多 和 多對一 兩個關聯組合而成德,在雙向關聯的兩端都知道對方是誰。下面就開始演示這種關聯。首先定義我們需要使用的pojo物件。public class member public class order 兩個pojo對應的對映檔案分別為member.hbm....

Hibernate一對多對映

一對多使用區縣和街道舉例 街道的實體 private integer jdid 街道的id private string jdname 街道名 private quxian quxian 屬於哪個區縣 區縣的實體 private integer qxid 區縣的id private string q...

hibernate單向一對多和雙向一對多

單向一對多 例如有部門封裝類 private int deptno private string deptname private string location 有職員封裝類 private int empno private string empname private dept dept 在多...