Spring JPA 联表查询 之 OneToOne

本文详细介绍了Spring JPA中的一对一(OneToOne)联表查询,包括单向和双向联表,以及延迟加载(懒加载)的概念。通过注解@OneToOne配置实体之间的关系,讨论了如何通过user获取car信息,反之亦然,以及如何实现数据的懒加载以优化性能。
摘要由CSDN通过智能技术生成

前言

前面几篇我们学习的都是单表查询,就是对一张表中的数据进行查询。而实际项目中,基本都会有多张表联合查询的情况,今天我们就来了解下JPA的联表查询是如做的。

源码

@OneToOne 注解实现一对一关系映射。比如用户跟车辆的关系(这里假设一个人只能有一辆车),一个用户只能对应一辆车,而一辆车同样只能对应一个用户。
老规矩,在实例之前,我们先看看源码:

public @interface OneToOne {

    Class targetEntity() default void.class;

    CascadeType[] cascade() default {};

    FetchType fetch() default EAGER;
   
    String mappedBy() default "";
  
    boolean orphanRemoval() default false;
}
复制代码

注解属性

  1. targetEntity:(可选)表示默认关联的实体类型,默认为当前标注的实体类
  2. cascade:(可选)当前类对象操作后级联对象的操作。默认为不级联任何操作。
  3. fetch:(可选)关联是否延迟加载或者立刻加载。立刻加载是立刻获取关联的实体;延迟加载是表示关系类在被访问时才加载。默认值EAGER,也就是立刻加载。
  4. mappedBy:(可选)拥有关联关系的域,如果关系是单向的就不需要;如果是双向关系表,那么拥有关系的这一方有建立、解除和更新与另一方关系的能力,而另一方没有,只能被动管理,这个属性被定义在关系的被拥有方
  5. orphanRemoval:(可选)是否将删除操作应用于具有已从关系中删除,并将删除操作级联到这些实体。

单向联表

我这里所说的单向联表就是只有一方添加注解;通俗讲就是我可以通过 user 获取到其 car 的信息,而不同通过 car 获取到其 user 的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值