关联表映射 Association Table Mapping
- 把关联保存为一个表,存储关联表的外键
- 在对象中,使用集合作为域值,来处理多值域.
- 而在DB中,只能有单值域.
- 外键映射的核心,是在关联关系的单值端使用外键来维持联系.
- 而在多对多的关联关系中,已经不存在单值端了.
- 运行机制
- 使用一个链接表来保存关联关系.
- 仅有两个字段,即两个关联表的外键ID.
- 对于每一对相关联的对象,它会有一个数据行与之对应.
- 链接表没有对应的内存对象.所以也就没有ID.其主键是两个关联表的主键的组合.
-
- 从链接表中加载Data需要两次查询,例如为雇员加载机能的问题
- 1,查询EmployeesSkills表,得出该雇员关联的所有行.
- 2,根据这些关联行的ID,查找出所有的机能对象.
- 当内存中已存在这些信息时,没有问题.否则需要多次的DB查询开销.
- 从链接表中加载Data需要两次查询,例如为雇员加载机能的问题
- 使用时机
- 标准情况是多对多的关联关系.
- 当相关联的表结构已经无法改变时,只能使用它.
- 有时,关联表也会存储某种关系的信息,此时,它就会对应一个真实的领域对象.