JPA映射关联关系

  1. 映射单项多对一的关联关系(常用)
  2. 映射单项一对多的关联关系
  3. 映射双向多对一的关联关系
  4. 映射双向一对一的关联关系
  5. 映射双向多对多的关联关系

一、单项多对一的关联关系

客户实体:

jpa映射mysql的json列 jpa映射关系_JPA


Customer【一】 中没有 Order【多】订单实体:

jpa映射mysql的json列 jpa映射关系_关联关系_02


jpa映射mysql的json列 jpa映射关系_多对一_03


jpa映射mysql的json列 jpa映射关系_多对一_04


Order【多】 中有 Customer【一】“多”

中含有外键

测试映射关系:

  • 【增】

    建议:
    保存“多对一时”,先保存“一”,后保存“多”;这样不会有多余的update语句。
  • 【查】
  • 【删】

    不能直接删除 “ 多 ” 的一方,因为有外键约束
  • 【改】

二、单项一对多的关联关系

客户实体:

jpa映射mysql的json列 jpa映射关系_JPA


jpa映射mysql的json列 jpa映射关系_JPA映射关联关系_06


jpa映射mysql的json列 jpa映射关系_多对一_07


jpa映射mysql的json列 jpa映射关系_关联关系_08


" 一 " 的有外键

订单实体:

jpa映射mysql的json列 jpa映射关系_关联关系_02

测试映射关系:

  • 【增】

    一对多关联关系进行保存时,一定会多出update,因为多的一端不会保存外键列。
  • 【查】
  • 【删】
  • 【改】

三、双向多对一的关联关系

双方的外键列名需要一致;

客户实体:

jpa映射mysql的json列 jpa映射关系_JPA


jpa映射mysql的json列 jpa映射关系_JPA映射关联关系_06


jpa映射mysql的json列 jpa映射关系_多对一_07


jpa映射mysql的json列 jpa映射关系_关联关系_08


jpa映射mysql的json列 jpa映射关系_JPA映射关联关系_14

订单实体:

jpa映射mysql的json列 jpa映射关系_关联关系_02


jpa映射mysql的json列 jpa映射关系_多对一_03


jpa映射mysql的json列 jpa映射关系_多对一_04

测试映射关系:

  • 【增】

    在双向 1 => n 的关联关系,执行保存时:
    [1.] 若先保存 n 的一端,在保存 1 的一端,默认情况下会多出 n 条update语句;
    [2.] 若先保存 1 的一端,则会多出 x 条update语句
    建议:
    在进行双向1 => n关联关系是,建议使用 n 的一方来维护关联关系, 这样会有效减少SQL语句。

四、双向一对一的关联关系

经理和部门的关系

经理实体:

jpa映射mysql的json列 jpa映射关系_JPA映射关联关系_18


jpa映射mysql的json列 jpa映射关系_JPA映射关联关系_19

部门实体:

jpa映射mysql的json列 jpa映射关系_JPA_20


jpa映射mysql的json列 jpa映射关系_关联关系_21

测试代码:

  • 【增】
  • 【查】

    先获取不维护关系的一方,也一样。

五、双向多对多的关联关系

双向多对多必须由一方放弃维护多对多关系,否则中间表会出现主键重复的问题。
商品和类别的关系

类别实体类

jpa映射mysql的json列 jpa映射关系_JPA映射关联关系_22

商品表实体类

jpa映射mysql的json列 jpa映射关系_关联关系_23


jpa映射mysql的json列 jpa映射关系_JPA映射关联关系_24

测试映射代码: -【增】

jpa映射mysql的json列 jpa映射关系_多对一_25


-【查】


jpa映射mysql的json列 jpa映射关系_多对一_26