JPA mappedBy、JoinColumn、FetchType.LAZY和FetchType.EAGER介绍

在单向关系中没有mappedBy,因此使用@JoinColumn建立外键关联,建立外键的一端即是主控方,主控方相当于拥有指向另一方的外键的一方。

JoinColumn

  • 一对一和多对一的@JoinColumn注解的都是在“主控方”,都是本表指向外表的外键名称。
  • 一对多的@JoinColumn注解在“被控方”,即一的一方,指的是外表中指向本表的外键名称。一般只有单向关系才在“被控方”中使用@JoinColumn,双向关系使用mappedBy。
  • 多对多中,@JoinColumn写的都是本表在中间表的外键名称,inverseJoinColumns写的是另一个表在中间表的外键名称。

mappedBy

mappedBy用于指定具有双向关系的两个实体中哪个实体是被关联处理的,使用mappedBy的一方是被控制的,另一方是主控方。

特点
  1. 只有OneToOne、OnetoMany、ManyToMany上才可以有mappedBy属性;
  2. 在@OneToMany注解中,mappedBy表示:由One的一方指向Many的一方;mappedBy的值为Many方中定义的One方类型的字段,即主控方中定义的被控方的对象名;
  3. 关系的主控方,即Many方负责维护关系,在主控方用@JoinColumn建立外键;
  4. mappedBy与JoinColumn和JoinTable总是互斥的,不能同时出现在一方;

FetchType.LAZY和FetchType.EAGER区别

  1. FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载;
  2. FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值