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">