一.一对多和多对一的关系映射
1.逻辑
先建立好表之间的关系。
通过外键将主表的id进行绑定。
2.双向关联和单向关联
双向关联:指的是俩表之间可以互相关联,操作一张表的同时可以操作另一张表。
单向关联:指的是只有一张表可以关联另一张表,另一张表不能操作该表。
3.一对多的关系映射
(1)语法
//配置联系人的关联,注意toString不能包含该属性
/**
* 配置一对多关系
* 1.关系声明
* targetEntity = 对方实体类的字节码对象
* 2.配置外键
* @JoinColumn(name = "从表的外键字段名称",referencedColumnName = "主表的id")
*/
@OneToMany(targetEntity = 对方实体类的字节码对象)
@JoinColumn(name = "lkm_cust_id",referencedColumnName = "cust_id")
(2)范例
4.多对一的关系映射
(1)语法
/**
* 配置多对一的关系
* 1.配置表关系
* @ManyToOne(targetEntity = 一的一方实体类字节码对象)
* 2.配置外键
* @JoinColumn(name = "从表的外键字段名称",referencedColumnName = "主表的id")
*/
@ManyToOne(targetEntity = Customer.class)
@JoinColumn(name = "lkm_cust_id",referencedColumnName = "cust_id")
(2)范例
5.设置消除主表的外键维护全
(1)语法
//放弃外键约束权,mappedBy设置外键约束维护是从表的customer属性上
@OneToMany(mappedBy = "customer") //mappedBy设置外键约束所在位置
(2)范例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M4eQm12C-1590222877026)(https://uploader.shimo.im/f/pLaR4ufxy7YU8zYe.png!thumbnail)]
6.使用外键约束同时操作俩张表
二.设置级联操作
1.概述
操作一个对象同时操作他的关联对象。
2.逻辑
- 需要区分操作的主体。
- 需要操作主体的实现类上,添加级联属性(需要添加到多表映射关系的注解上)
- cascade(配置级联)
3.级联添加的语法
//不推荐级联删除,如果一对多或者多对一,可以使用。多对多不推荐级联删除
//cascade设置级联属性,删除的属性值是delete
cascade = {CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REMOVE}