一、總體來分有一對
一、一對多、多對
一、多對多這四種關係。
二、一對一關係
1、單向主鍵
2、單向外來鍵
具體需求是husband實體中儲存wife的引用,得到husband的實體後就可以取得wife實體。且關係是一對一。
husband實體簡略資訊
private int id; private string name; private int age; private wife wife;
wife實體簡略資訊
private int id; private string name;
現在使用xml構建從husband到wife的一對一關聯,xml中使用的是標籤,理解的大概是外來鍵一般都是儲存在多這一方,站在當前實體husband的位置上考慮,即儲存引用的這一方,這樣就存在關聯的關係,之後加上加上unique屬性進行限定為一對一的關係。(多對一的特殊情況)
wife.hbm.xml簡要配置。
3、雙向主鍵
4、雙向外來鍵
現在在wife新增乙個husband的屬性使其可以找到husband,則需在wife.hbm.xml中進行配置
對於property-ref="wife",就是指明要進行關聯的屬性已經在husband的wife屬性進行關聯了
從wife端查詢husband時,hibernate生成的查詢語句
hibernate: select wife0_.id as id1_1_, wife0_.name as name1_1_, husband1_.id as id0_0_, husband1_.name as name0_0_, husband1_.age as age0_0_, husband1_.wife as wife0_0_ from wife wife0_ left outer join husband husband1_ on wife0_.id=husband1_.wife where wife0_.id=?
三、一對多和多對一關係
1、外來鍵一般放在多的一邊
2、多對一單向關聯,(person:phone)在phone實體中儲存person的引用(常用)。
person簡略資訊
private int id; private int name;
phone簡略資訊
private int id ; private string name ; private person person ;
person.hbm.xml配置
phone.hbm.xml配置
3、一對多單向關聯,即在person中儲存phone的乙個引用,一般通過set集合實現。
person:
private int id; private int name; private setphones = new hashset() ;
phone:
private int id ; private string name ;
person.hbm.xml:
phone.hbm.xml
4、一對多或多對一雙向關聯(少用)
person
private int id; private int name; private setphones = new hashset() ;
phone
private int id; private string name; private person person;
person.hbm.xml
phone.hbm.xml
或person.hbm.xml
四、多對多關係
1、多對多單向關聯。
乙個系統中使用者和角色是多對多關係,即乙個使用者(user)可以是多個角色(role),乙個role也可以被多個user所持有。
user:
private int id; private string name; private setroles = new hashset();
role:
private int id; private string description;
role.hbm.xml:
user.hbm.xml中描述建立中間表,並建立user到role的關聯
2、多對多雙向(少用)
現在要使role和user雙向關聯,雙向的*.hbm.xml都要設定many-to-many,對role變動一下
private int id; private string description; private setusers = new hashset();
對role.hbm.xml進行下列配置
Hibernate關聯關係對映
1.單向一對一 1 主鍵關聯 兩個表通過主鍵建立一對一關聯關係,從表的主鍵由被關聯類生成。對映 class foreign name 關聯屬性的屬性名 class 持久化類 constrained true one to one 2 外來鍵關聯 兩張表的主鍵不同,通過在一張表中新增外來鍵來保持一對一...
Hibernate 實體關聯關係對映
hibernate 實體關聯關係對映 花了三天的業餘時間,終於寫完了hibernate關聯關係對映的所有例項,感覺還應該總結一下。hibernate對映關係錯綜複雜,在實際中真的都能用到嗎?不用行嗎?在我看來,hibernate提供這些對映關係,常用就是一對一和多對一,並且在能不用連線表的時候盡量不...
Hibernate關聯關係對映 ORM)
hibernate入門 首先要了解幾點,hibernate實體對映技術及其設計上的一些通用策略。對於orm而言,乙個非常關鍵的特性,就是實體之間關聯關係的管理。資料關聯是orm的乙個重要特徵 在一方維護關聯資訊,在另一方不做處理。如何理解?在實際應用中往往需要根據查詢到的結果獲得相關的其他持久化的資...