SSH之hibernate 1和n的關聯對映

2021-06-25 23:02:20 字數 1727 閱讀 9653

關聯對映將關聯關係對映到資料庫中,所謂的關聯關係在物件模型中就是乙個或多個引用。那麼hibernate在載入的時候根據關係自動載入物件,不用再分步查詢。這裡介紹一對多和多對一的關聯對映。

一、n:1

1、物件模型

關聯是有方向的,只能從user看到group,反過來看不到

,根據uml知識,這裡的use中持有group的引用

,也就是外來鍵

2、對映檔案

group:

group的對映檔案非常簡單,因為它沒持有引用,只是簡單的屬性

user:

name是group在user中的成員變數名,因為group是關鍵字,所以要重新命名

3、好處

這種關聯的好處體現在查詢上,按照以前的查詢方式,首先從資料庫中查出關聯的外鍵值,然後再從另一張表中查,這種分步查詢浪費時間和精力。而新增關聯後,hibernate載入user物件同時載入group的資料,提高查詢效率。

**示例:

public void testload1()catch(exception e)finally

}

**中根據id值查詢user物件,同時載入了group物件。

二、1:n

它們其實是乙個關係,只是從不同的角度看,對映檔案的寫法不同

1、物件模型

2、對映檔案

student:

classes:

表示為多的一端加欄位,一的一端維護關係,這樣在生成表之後在student的表中會多乙個classesid的字段,其實也是外來鍵

3、作用:查詢組的時候直接把組中的學生查出來

public void testload1()

session.gettransaction().commit();

}catch(exception e)finally

}

因為classes和students有關聯對映的關係,所以在載入classes的時候會載入學生

4、缺陷

* 因為多的一端的student不知道classes的存在(也就是student沒有維護與classes的關係)所以在儲存student的時候關係欄位classes是為null的,如果將該關係字段設定為空,則 無法儲存資料

*另外因為student不維護關係,而classes維護關係,classes就會發出多餘的update

5、解決辦法

為了避免問題出現,一般設為雙向關聯,讓多的一端也維護關係

三、總結

1、關聯對映原理:在多的一端加入乙個外來鍵指向一的一端

,只是角度不同

2、區別:

*多對一:多指向一的關係,載入多的時候會把一加上

*一對多:一指向多,載入一的時候會把多加上

3、載入關聯物件不用再發語句,hibernate自動載入

《深入淺出Hibernate》(1)

5。1從福州回來前,還是買了這本書,因為一直想對hibernate做一下深入了解,過去都是自己讀文件,紙上得來終覺淺。因為過去看過同事買的此書,前面3章很迅速,也按照他的示範做了下例子。第4章開始介紹hibernate的基礎知識,看到 hibernate o r對映 這一節,收穫頗多。如userty...

SSH學習之Hibernate的簡介

struts2是負責呼叫業務邏輯處理和頁面跳轉的框架,也就是說在mvc設計模式中擔當的是檢視和控制器的角色。那麼模型 model 主要是負責業務邏輯和資料庫訪問,而hibernate主要負責的就是資料庫訪問。如果學過jdbc的程式設計師都知道,我們是通過sql語句直接運算元據庫的,雖然執行 的效率非...

ssh架構之hibernate 三 關係對映

1.對映檔案配置 測試 1.查詢測試 執行順序,先查詢多方,在查詢一方,一方採用延遲載入 注意 如果不使用一方的資料,就關閉session,報錯,同延遲載入中的報錯型別一樣 測試控制台輸出為 2.儲存測試 輸出結果 注意 1.儲存測試先儲存商品後儲存分類 測試結果 結論 很明顯先儲存商品後儲存分類,...