一、 单向N-1关联
1. 单向N-1关联,比如多个人对应同一个地址,只需从人实体端可以找到对应的地址实体无须关心某个地址的全部住户。
2. 为了让两个持久化类支持这种关联映射,程序应该在N的一端增加一个引用1端的关联实体。如下:
public class Person { ... private Address address; .....}
3. 同时在配置hbm文件的时候又分为无连接表和有连接表(一般的N-1情况下都无需连接表),1端在配置hbm文件时保持普通配置。Person.hbm.xml如下:
二、单向1-1关联
1. 单向1-1与单向N-1的持久化类没有丝毫区别,如上。
2. 单向1-1与单向N-1的映射配置也非常相似,只需要在
address
三、单向1-N关联
1. 单向1-N关联的持久化发生了变化,持久化类里需要使用集合属性,因为N的一端将以集合形式表现.
private Set
addresses = new HashSet ();//赋值时使用 person.getAddresses().add(address);
2. 在1-N映射集合属性的时候必须为集合元素增加
四、单向N-N关联
1. 单向N-N关联和1-N关联的持久化类完全相同,在控制关系的一端增加一个集合属性
2. N-N关联必须使用连接表,N-N关联与有连接表的1-N关联非常相似,只要去掉
五、双向1-N(双向N-1)关联
1. 双向1-N关联和双向N-1关联是完全相同的两种情形,两端都需要增加对关联属性的访问,N的一端增加引用到关联实体的属性,1的一端增加集合属性。
public class Person { ... private Set
public class Address{ ... private Person person; .....}
2. 无连接表的双向1-N关联
.....................
................
3. 有连接表的双向1-N关联
....................
.........................
六、双向N-N关联
1. 双向N-N关联需要两端都使用集合属性,两端都增加对集合属性的访问。
2. 双向N-N关联只能采用连接表来建立实体之间的关系。
....................
....................
七、双向1-1关联
1. 双向1-1关联只需在两个持久化类都增加引用关联实体的属性。
2. 基于外键的双向1-1关联
....................
.....................
2. 基于主键的双向1-1关联
....................
person
....................
3. 有连接表的双向1-1关联
.....................
............................