相关文章:
JPA基础知识(一):简介、基本注解
JPA基础知识(二):使用JPA持久化对象的步骤
JPA基础知识(三):相关接口/类
JPA基础知识(四):映射关联关系
JPA映射关联关系
- 映射单项多对一的关联关系(常用)
- 映射单项一对多的关联关系
- 映射双向多对一的关联关系
- 映射双向一对一的关联关系
- 映射双向多对多的关联关系
一、单项多对一的关联关系
客户实体:
Customer【一】 中没有 Order【多】
订单实体:
Order【多】 中有 Customer【一】
“多” 中含有外键
测试映射关系:
- 【增】
建议:
保存“多对一时”,先保存“一”,后保存“多”;这样不会有多余的update语句。- 【查】
- 【删】
不能直接删除 “ 多 ” 的一方,因为有外键约束- 【改】
二、单项一对多的关联关系
客户实体:
" 一 " 的有外键
订单实体:
测试映射关系:
- 【增】
一对多关联关系进行保存时,一定会多出update,因为多的一端不会保存外键列。- 【查】
- 【删】
- 【改】
三、双向多对一的关联关系
双方的外键列名需要一致;
客户实体:
订单实体:
测试映射关系:
- 【增】
在双向 1 => n 的关联关系,执行保存时:
[1.] 若先保存 n 的一端,在保存 1 的一端,默认情况下会多出 n 条update语句;
[2.] 若先保存 1 的一端,则会多出 x 条update语句
建议:
在进行双向1 => n关联关系是,建议使用 n 的一方来维护关联关系, 这样会有效减少SQL语句。
四、双向一对一的关联关系
经理和部门的关系
经理实体:
部门实体:
测试代码:
- 【增】
- 【查】
先获取不维护关系的一方,也一样。
五、双向多对多的关联关系
双向多对多必须由一方放弃维护多对多关系,否则中间表会出现主键重复的问题。
商品和类别的关系
类别实体类
商品表实体类
测试映射代码:
-【增】
-【查】