Hibernate 的多表關(guān)系

hibernate表關(guān)聯(lián)的各種配置:

1莫矗、多對多單向:

user----->role

user.hbm.xml:

role.hbm.xml:

2椿浓、多對多雙向:

user.hbm.xml:

role.hbm.xml:




3、一對多單向:

student(多)----->classes(一)

student.hbm.xml:

classes.hbm.xml:

//classesid是在student表中加的一字段列名

4蒸眠、一對多雙向:

student(多)----->classes(一)

student.hbm.xml:

classes.hbm.xml:

//inverse表示維護(hù)關(guān)系反轉(zhuǎn),true表示失效,不由classes

//這端來維護(hù)带污。cascade表示級聯(lián),即當(dāng)對classes操作時香到,發(fā)現(xiàn)還未有student持久化鱼冀,會自動持久化student的

5、一對一主鍵關(guān)聯(lián)(單向關(guān)聯(lián)Person---->IdCard)

一對一主鍵關(guān)聯(lián)映射:讓兩個實體對象的id保持相同悠就,這樣可以避免多余的字段被創(chuàng)建

Person.Java

view plaincopy to clipboardprint?

package com.bjsxt.hibernate;

public class Person {

private int id;

private String name;

private IdCard idCard;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public IdCard getIdCard() {

return idCard;

}

public void setIdCard(IdCard idCard) {

this.idCard = idCard;

}

}

package com.bjsxt.hibernate;

public class Person {

private int id;

private String name;

private IdCard idCard;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public IdCard getIdCard() {

return idCard;

}

public void setIdCard(IdCard idCard) {

this.idCard = idCard;

}

}

Person.hbm.xml://其對應(yīng)的表中只有id,name兩個屬性


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

//主鍵生成方式受制于IdCard主鍵生成方式

idCard

IdCard.java:

view plaincopy to clipboardprint?

package com.bjsxt.hibernate;

public class IdCard {

private int id;

private String cardNo;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

}

package com.bjsxt.hibernate;

public class IdCard {

private int id;

private String cardNo;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

}

IdCard.hbm.xml:


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

6千绪、一對一主鍵關(guān)聯(lián)(雙向Person<-------->IdCard)

與一對一主鍵關(guān)聯(lián)(單向)大體一致,只不過IdCard.hbm.xml的配置里要一個one-to-ont屬性理卑,IdCard.java里加一個Person的引用翘紊。

IdCard.java:

view plaincopy to clipboardprint?

package com.bjsxt.hibernate;

public class IdCard {

private int id;

private String cardNo;

private Person person;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

public Person getPerson() {

return person;

}

public void setPerson(Person person) {

this.person = person;

}

}

package com.bjsxt.hibernate;

public class IdCard {

private int id;

private String cardNo;

private Person person;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

public Person getPerson() {

return person;

}

public void setPerson(Person person) {

this.person = person;

}

}

IdCard.hbm.xml:

view plaincopy to clipboardprint?


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

7、一對一唯一外鍵關(guān)聯(lián)(單向Person----->IdCard)

其實是多對對一的一個特例藐唠。

Person.java

view plaincopy to clipboardprint?

package com.bjsxt.hibernate;

public class Person {

private int id;

private String name;

private IdCard idCard;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public IdCard getIdCard() {

return idCard;

}

public void setIdCard(IdCard idCard) {

this.idCard = idCard;

}

}

package com.bjsxt.hibernate;

public class Person {

private int id;

private String name;

private IdCard idCard;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public IdCard getIdCard() {

return idCard;

}

public void setIdCard(IdCard idCard) {

this.idCard = idCard;

}

}

Person.hbm.xml

view plaincopy to clipboardprint?


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

IdCard.java

view plaincopy to clipboardprint?

package com.bjsxt.hibernate;

public class IdCard {

private int id;

private String cardNo;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

}

package com.bjsxt.hibernate;

public class IdCard {

private int id;

private String cardNo;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

}

IdCard.hbm.xml

view plaincopy to clipboardprint?


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

8帆疟、一對一唯一外鍵關(guān)聯(lián)(雙向Person<----->IdCard)

相對于上面的一對一唯一外鍵關(guān)聯(lián)(單向)不同的是,IdCard.java添加了Person的引用與IdCard.hbm.xml添加了one-to-one標(biāo)簽宇立。

IdCard.java:

view plaincopy to clipboardprint?

package com.bjsxt.hibernate;

public class IdCard {

private int id;

private String cardNo;

private Person person;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

public Person getPerson() {

return person;

}

public void setPerson(Person person) {

this.person = person;

}

}

package com.bjsxt.hibernate;

public class IdCard {

private int id;

private String cardNo;

private Person person;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCardNo() {

return cardNo;

}

public void setCardNo(String cardNo) {

this.cardNo = cardNo;

}

public Person getPerson() {

return person;

}

public void setPerson(Person person) {

this.person = person;

}

}

IdCard.hbm.xml:

view plaincopy to clipboardprint?


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踪宠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妈嘹,更是在濱河造成了極大的恐慌柳琢,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件润脸,死亡現(xiàn)場離奇詭異柬脸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)毙驯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門倒堕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爆价,你說我怎么就攤上這事垦巴∠碧拢” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵骤宣,是天一觀的道長秦爆。 經(jīng)常有香客問我,道長憔披,這世上最難降的妖魔是什么等限? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮活逆,結(jié)果婚禮上精刷,老公的妹妹穿的比我還像新娘。我一直安慰自己蔗候,他們只是感情好怒允,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锈遥,像睡著了一般纫事。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上所灸,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天丽惶,我揣著相機(jī)與錄音,去河邊找鬼爬立。 笑死钾唬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侠驯。 我是一名探鬼主播抡秆,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吟策!你這毒婦竟也來了儒士?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤檩坚,失蹤者是張志新(化名)和其女友劉穎着撩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匾委,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡拖叙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了赂乐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憋沿。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沪猴,靈堂內(nèi)的尸體忽然破棺而出辐啄,到底是詐尸還是另有隱情,我是刑警寧澤运嗜,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布壶辜,位于F島的核電站,受9級特大地震影響担租,放射性物質(zhì)發(fā)生泄漏砸民。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一岭参、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尝艘,春花似錦演侯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狡汉,卻和暖如春娄徊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盾戴。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工寄锐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尖啡。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓橄仆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親可婶。 傳聞我的和親對象是個殘疾皇子沿癞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法矛渴,內(nèi)部類的語法椎扬,繼承相關(guān)的語法,異常的語法具温,線程的語...
    子非魚_t_閱讀 31,625評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蚕涤,服務(wù)發(fā)現(xiàn),斷路器铣猩,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,810評論 0 11
  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據(jù)特定的OID,把一個對象從數(shù)據(jù)庫加載到內(nèi)存中OID...
    JHMichael閱讀 1,967評論 0 27
  • 莫楦看著古色古香的房子揖铜,這已經(jīng)是她在這里的第三天了,終于在她認(rèn)為最狗血最不可能最不可思議的事情發(fā)生了达皿。她—...
    幸運子莎閱讀 170評論 0 1