什麼是多對多關係呢?
關聯式資料庫中兩個表之間的一種關係, 該關係中第乙個表中的乙個行可以與第二個表中的乙個或多個行相關。第二個表中的乙個行也可以與第乙個表中的乙個或多個行相關。
比如在常見的訂單管理資料庫當中「產品」表和「訂單」表之間的關係。單個訂單中可以包含多個產品。另一方面,乙個產品可能出現在多個訂單中。
要表示多對多關係,就妖建立第三個表,稱為 聯接表,也稱( 橋接表、中間表)。它多對多關係分wie兩個一對多關係。將連個主鍵都放在第三個表中,因此,第三個表記錄關係的每個匹配項或例項。
不多說,我們例項來戰:嘻嘻嘻
example1:自關聯查詢 樹形選單表
treenode.jsp ,實現set/get方法
當前節點對父節點 多對一
父節點對子節點 一對多
entiey類
private integer treenodeid;
private string treenodename;
private integer treenodetype;
private integer position;
private string url;
// private set children = new hashset();//一對多
private list children = new arraylist();//一對多,用list是為了可以排序
private treenode parent;//外來鍵 多對多
private integer intichildren = 0;
寫treenode.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
寫乙個簡單的dao
package com.zking.five.dao;
import org.hibernate.hibernate;
import org.hibernate.session;
import org.hibernate.transaction;
import com.zking.five.entity.treenode;
import com.zking.two.util.sessionfactoryutils;
public class treenodedao
// system.out.println(tn);
transaction.commit();
session.close();
return tn;
}}
用junit測試
package com.zking.five.dao;
import static org.junit.assert.*;
import org.junit.before;
import org.junit.test;
import com.zking.five.entity.treenode;
public class treenodedaotest
@test
public void testget()
}}
這樣的原理是:
當載入一級節點時,ok
載入二級節點時,由於設定了強制載入,但同樣可以載入所有的二級節點,ok
載入**節點時,session關閉,並且預設採用的是懶載入
許可權選單載入有兩種方式
1.一次性將資料庫中的資料全部載入往瀏覽器返回(適用於選單較少)
2、選單表資料量較大,當出現瀏覽器卡頓的情況,第一種方式就不在使用。
採用第二種:選單逐級載入。
example2: 多對多級聯查詢 書籍表、書籍類別表
書籍可以對應多個類別,而類別也可以對應多本書,所以是多對多的關係。
book表的主鍵:book_id category類別表的主鍵:category_id 而他們在連線表分別的主鍵是bid和cid
在book.hbm.xml配置檔案中 通過自動關聯聯接表,以及關聯查詢出關聯物件。
類別表的配置檔案也是同乙個道理
<?xml version="1.0" encoding="utf-8"?>
總結:
在hibernate中,你只管查詢當前表物件即可
Hibernate多對多關聯關係
今天遇到乙個問題 有乙個的類reckoning,乙個類accountitem。這兩個類之間的關係時多對多的關聯關係。一開始是由accountitem來維護關聯關係的,也就是reckoning.hbm.xml檔案中的如下 將inverse的值設為true.set name accountitems t...
Hibernate多對多關係對映
兩張表的多對多關係,在資料庫中通常是通過第三張中間表來實現的,第三張中間表放的是兩張表各自的主鍵值,通過主鍵與主鍵的對應來體現表直接的關係。比如在許可權系統中,乙個使用者可以擁有多種許可權,而一種許可權也可以授予多個使用者。在持久化物件設計的時候,角色和使用者都分別有乙個集合來防止擁有它的使用者或角...
hibernate多對多關係配置
一名使用者可以有多個角色。乙個角色可以對於多名使用者。使用者實體類 public class user public void setsetrole setsetrole public intgetuid public void setuid int uid public string getuna...