囫囵吞枣的学了一些关系Hibernate的入门知识,梳理一下,觉得关系的映射在Hibernate知识体系内最为基础,也最为重要。小编写博客,作为总结。
Hibernate的关系映射细分为七类:
一对一单向关联
一对一双向关联
一对多单向关联
多对一单向关联
一对多双向关联
多对多单向关联
多对多双向关联
如果,你对面向对象很熟悉,特别是经常画UML图,这七种关系很容易掌握,主要是实现方面的问题了。本文先从最简单的入手:单向一对一关联
(1) 对象建立:(PersonàIdCard)
Person(人员)
IdCard(证件编号)
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;
}
}
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;
}
}
(2) 使用映射策略一:让两个实体主键一样
(3) 建立配置文件
<class name="com.zs.hibernate.IdCard" table="t_idCard">
<id name="id">
<generator class="native"/>
</id>
<property name="cardNo"/>
</class>
<class name="com.zs.hibernate.Person" table="t_person">
<id name="id">
<generator class="foreign">
<param name="property">idCard</param>
</generator>
</id>
<property name="name"/>
<one-to-one name="idCard" constrained="true"/>
</class>
(4) 得到表结构:
由表结构与实体可以看出,主键关联即利用主键进行关联,关联主键的值相同,constrained="true" 决定了,关系维护的单向性