多表关系
- 多对一|一对多 {客户与联系人}
- 多对多
- 一对一
多对一|一对多 {客户与联系人}
在表中的表达
|ID=1 百度公司 | 李彦宏 CID=1(外键指向一方的主键)|
|ID=1 百度公司 | 刘总 CID=1|
在对象中的表达
客户实体:
private Long id;
private String name;
private Set<联系人> linkMens;
使用集合表达,一的一方有多个多的一方
联系人实体:
private Long id;
private String name;
private 客户 Customer;
使用对象引用一的一方,
表达多的一方属于哪个一的一方
表达一对多关系时:
set集合:不重复(使用)
list集合:存取顺序一致,可重复(不使用)
对象关系映射,配置文件:
LinkMan.hbm.xml
<!--
name属性:引用属性名
column属性: 外键列名
class属性: 与我关联的对象完整类名
-->
<!--
级联操作: cascade
save-update: 级联保存更新
delete:级联删除
all:save-update+delete
级联操作: 简化操作.目的就是为了少些两行代码.
-->
<!-- 多的一方: 不能放弃维护关系的.外键字段就在多的一方. -->
<many-to-one name="customer" column="lkm_cust_id" class="Customer" >
</many-to-one>
customer.hbm.xml配置文件
<set name="LinkMens" inverse="true" cascade="delete">
<key column="lkm_cust_id"></key>
<one-to-many class="LinkMan"></one-to-many>
</set>
</class>