Spring JPA联表查询之注解属性怎么使用


这篇文章主要介绍“SpringJPA联表查询之注解属性怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringJPA联表查询之注解属性怎么使用”文章能帮助大家解决问题。(可选)指定关联的实体类;默认为当前标注的实体类。(可选)当前类对象操作后级联对象的操作。默认为不级联任何操作。只对作用的实体类有影响,对级联对象不会产生任何影响级联新建。对父对象进行持久化,同时对子对象也相应的持久化。user 实体类中关联的对象字段(级联对象)service 层新建方法执行请求 /user/save?name=lala&age=21&carname=苏M00002,控制台打印如下:如果有级联新建(保存)的需求,只能使用 CascadeType.PERSIST 或者 CascadeType.ALL,使用其他的操作会报错。级联删除。删除数据库中的对应实体,同时删除对应的所有关联对象user 实体类中关联的对象字段(级联对象)service 层删除方法执行请求 /user/deleteById?id=17,控制台打印如下:如果有级联删除的需求,只能使用 CascadeType.REMOVE 或者 CascadeType.ALL;使用其他的虽然不会报错,但是只会对作用对象进行删除,相关联的数据不会进行删除。级联刷新。作用对象 refresh 的同时级联对象也进行 refresh。这里 refresh 方法是EntityManager 的方法,我们来看一下他的源码最主要的是从数据库中刷新实例的状态,覆盖对实体所做的更改(如果有的话);通俗讲就是,只要没有做持久化的数据更改,就得不到我的认可。级联更新。user 实体类中关联的对象字段(级联对象)service 层更新方法执行请求/user/save?id=1&name=kiki&age=33&carid=1&carname=苏M00003,控制台打印如下:可以更新所有级联的对象,但是前提是要提供对象的 id,否则系统会认为你是新增。表示同时选择CascadeType.PERSISTCascadeType.REMOVECascadeType.REFRESHCascadeType.MERGE。一般情况不会使用,因为 CascadeType.REMOVE 是个高危操作。(可选)关联是否延迟加载(懒加载 FetchType.LAZY)或者立刻加载(FetchType.EAGER)。立刻加载是立刻获取关联的实体;延迟加载(懒加载)是表示关系类在被访问时才加载。User 实体类上的 Car 属性中 @OneToOne 添加属性 fetch = FetchType.LAZY(这里有一个报错需要注意一下,详情请见 # Spring JPA 错题集 第一个信息)执行请求/user/findById?id=1,控制台打印如下:这里先挖一个坑,就是 JPA 在读取数据时 N+1 的问题。再看看立刻加载的场景。
执行请求/user/findById?id=1,控制台打印如下:懒加载的时候(LAZY)只会将主体数据请求出来,对于级联数据需要我们主动 get,如下图所示:
而立刻加载的时候(EAGER)会将主体数据和所有级联数据请求出来,对于大数据的情况,系统可能会存在一定的压力,所以实际项目中,我们大多数情况下会使用 FetchType.LAZY。(可选)拥有关联关系的域,如果关系是单向的就不需要;如果是双向关系表,那么拥有关系的这一方有建立、解除和更新与另一方关系的能力,而另一方没有,只能被动管理,这个属性被定义在关系的被拥有方(可选)是否将删除操作应用于具有已从关系中删除,并将删除操作级联到这些实体;默认为false。关于“SpringJPA联表查询之注解属性怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机免费云主机域名行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: SpringBoot整合java诊断工具Arthas怎么用

这篇文章主要介绍了SpringBoot整合java诊断工具Arthas怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合java诊断工具Arthas怎么用文章都会有所收获,下面我们一起来看看吧。这里建议a…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/06 19:49
Next 07/06 19:49

相关推荐