hibernate多對多的配置與應用

2021-09-01 23:55:35 字數 1404 閱讀 2634

回顧:

一對多1、介紹了關聯關係:一對一,一對多、多對多,是為了體現資料庫表與表之間的關係

2、一對多

描述表與表之間的關係,建立實體類

編寫對映檔案

一方的配置

set name=類的屬性

key 外來鍵

class 多方的實體類的全類名

多方的配置:

many-to-one name class 一方全類名 column 外來鍵

hibernate。cfg。xml

3、新增

1、關聯關係的維護 insert=false update=false

2、查詢

級聯查詢,預設查詢不出關聯表資訊

因為懶載入 hibernate。initialize(**物件)

3、刪除

一方的刪除

通過get方法拿到一方

迭代多方的物件,先刪除多方

最後刪除一方

資料庫的多對多

1.1 資料庫中不能直接對映多對多

處理:建立乙個橋接表(中間表),將乙個多對多關係轉換成兩個一對多

注1:資料庫多表聯接查詢

永遠就是二個表的聯接查詢

a   b   c  d

t1 c

t2 d

t3

注2:交叉連線

注3:外連線:left(左)/right(右)/full(左右)

主從表:連線條件不成立時,主表記錄永遠保留,與null匹配

a	b	ab

select * from a,b,ab where a.aid=ab.aid and b.bid = ab.bid

where

在hibernate中,你只管查詢當前表物件即可,

hibernate會自動關聯橋表以及關聯表查詢出關聯物件

book category book_category

select * from book b,book_category bc,category where b.bid = bc.bid and bc.cid = c.cid

and bid = 2

hibernate的多對多

2.1 hibernate可以直接對映多對多關聯關係(看作兩個一對多)

多對多關係注意事項

3.1 一定要定義乙個主控方

3.2 多對多刪除

3.2.1 主控方直接刪除

3.2.2 被控方先通過主控方解除多對多關係,再刪除被控方

3.2.3 禁用級聯刪除

3.3 關聯關係編輯,不需要直接操作橋接表,hibernate的主控方會自動維護

案例:自關聯查詢 選單表

多對多級聯查詢 書籍表、書籍類別表

hibernate的多對多

近日工作中遇到多對多,以前未曾用過hibernate,這次也算是摸著石頭過河。之前試驗了級聯的cascadetype.all,卻發現當刪除部門表的時候,中間表資料刪除了,結果將人員表相關聯的資料也全部刪除了。後來將級聯改為cascadetype.persist,cascadetype.merge,倒...

hibernate的多對多

1.herbernate一對多自關聯 樹形選單查詢可能出現的問題 當載入一級節點的時候沒問題 強制載入 載入二級載入時候,由於設定了強制載入,同樣可以載入出所有的二級節點。沒問題 載入 節點時,這是session關閉了,並且預設採用的是懶載入 許可權選單載入有兩種方式 1 一次性將資料庫表中的資料全...

hibernate的多對多

多對多關聯是hibernate中一種比較特殊的關聯,它需要借助中間表來完成多對多資訊的儲存。多對多關聯只有雙向關聯。資料庫的多對多 資料庫中不能直接對映多對多 處理 建立乙個橋接表 中間表 將乙個多對多關係轉換成兩個一對多。hibernate的多對多 hibernate可以直接對映多對多關聯關係 看...