首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解决JPA懒加载典型的N+1问题-注解@NamedEntityGraph

也由此遇到了N+1的典型问题 : 通常1的这方,通过1条SQL查找得到1个对象,而JPA基于Hibernate,fetch策略默认为select(并非联表查询),由于关联的存在 ,又需要将这个对象关联的集合取出...,集合数量是N,则要发出N条SQL,于是本来的1条联表查询SQL可解决的问题变成了N+1条SQL 我采取的解决方法是 : 不修改懒加载策略,JPA也不写native SQL,通过联表查询进行解决。...  我设计了一个典型的二叉树结构实体叫做Area,代表的含义是区域 (省、市、区)。...省是树的一级根节点,市是省的子节点,区是市的子节点。如 : 广东省,广州市,天河区   1 . Area实体设计采用自关联,关联的子集fetch策略为懒加载。...; import name.ealen.entity.Category; import org.springframework.data.jpa.repository.EntityGraph; import

3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring认证中国教育管理中心-Spring Data JPA 参考文档五

    为避免在具体接口上重复自定义查询方法的定义,可以@Query在通用存储库接口的注解的查询字符串中使用实体名称表达式,如下例所示: 示例 68.在存储库查询方法中使用 SpEL 表达式 - entityName...您可以在实体上使用该注释来配置结果查询的获取计划。获取的类型(Fetch或Load)可以通过使用注释type上的属性进行配置@EntityGraph。...", type = EntityGraphType.LOAD) GroupInfo getByGroupName(String name); } 也可以使用 来定义临时实体图@EntityGraph。...提供的attributePaths被翻译成对应EntityGraph而无需显式添加@NamedEntityGraph到您的域类型,如以下示例所示: 示例 77.在存储库查询方法上使用 AD-HOC 实体图定义...作为一种解决方法,您可以使用命名查询ResultSetMapping或 Hibernate 特定的ResultTransformer 动态投影 到目前为止,我们已经使用投影类型作为集合的返回类型或元素类型

    1.7K20

    提高API加载速度的4种方法,并应用于Java Spring Boot

    ,...Hibernate 查询会获取所有数据,然后再进行实体/模型/DTO的反序列化,导致查询数据库时间很长有两种解决这个问题的方法:方法1:使用两个查询语句仅选择 post.id 以获取满足条件的...方法2:如果使用 Oracle Database,可以使用 DENSE_RANK我还没有应用过这种方法,所以想要应用并了解更多细节,请参考此处。...Java Spring Boot如果使用 logback.xml,可以进行类似如下的配置: 我经常编写调度程序/定时任务/定时器,每天清晨系统将会预先获取和缓存用于大量数据查询的 API,比如列表、图表、统计等。负载压缩简而言之,这将在客户端的反序列化和响应时优化数据量。...一些方法包括:gzip 响应对于每个 API 使用 DTO 技术而不是使用实体或模型中的完整列对字段使用简短的命名(不建议这种方式,因为返回的字段难以理解含义)对于 Java Spring Boot,你可以在这里了解更多

    22410

    重新认识你认识的Hibernate(二)

    Hibernate估计大家已经用过很多年了吧,好多同学说用过Hibernate,不需要你来讲,但再仔细想想,你能告诉我Hibernate是什么吗?...今天带大家重新认识一下你认识的Hibernate。 Hibernate 概述:持久化对象的生命周期 ? Transient Objects:使用new 操作符初始化的对象不是立刻就持久的。...Hibernate 概述:Hibernate大对象数据类型 在java中,java.lang.String可以用来表示长字符串(长度超过255),字节数组byte[]可以用来存放图片或文件的二进制数据。...generator>子元素是一个java类的名字,用来为该持久化类的实例生成唯一的标识,所有的生成器都实现org.hibernate.id.IdentifierGenerator接口。...在的子元素指定用作产生主键的序列名称。

    80740

    三面滴滴失败,总结了Java面试题,有几个题还是一直搞不懂

    有些知识点不经常使用就会忘记,但是面试还会问,对此,我也是深受其害,所以我决定将这些遇见的问题整理下来,分享出去,帮助更多的人,我们共同进步。...from=pc] 1、两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗? 2、String 属于基础的数据类型吗? 3、Java 中操作字符串都有哪些类?...45、kafka 可以脱离 zookeeper 单独使用吗?为什么? 46、说一下 MySQL 常用的引擎? 47、迭代器 Iterator 是什么? 48、说一下 hibernate 的缓存机制?...143、hibernate 实体类可以被定义为 final 吗? 144、MySQL 问题排查都有哪些手段? 145、常见的异常类有哪些? 146队列和栈是什么?有什么区别?...167、集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗? [115d64cfddc6424c8bb48fc284ac2f25?

    95100

    Java Mybatis基础知识总结

    使用#{}可以有效的防止SQL注入,提高系统安全性。 ● 你对MyBatis的一级缓存和二级缓存有了解吗,说一下?...在映射关系中,还可以通过resultMap的typeHandler设置实现查询结果值的类型转换。另外,最重要的是通过resultMap的子标签比如、等,可以实现一对一、一对多等的映射。...以上大概就是我了解的MyBatis实现原理。 ● 谈谈MyBatis和Hibernate的区别?...Hibernate属于全自动ORM映射框架,使用Hibernate查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。...Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页

    1.6K30

    数据结构与算法面试题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。(提示:使用动态规划或者中心扩散)

    数据结构与算法面试题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。(提示:使用动态规划或者中心扩散) 简介:给定一个字符串 s,找到 s 中最长的回文子串。...你可以假设 s 的最大长度为 1000。(提示:使用动态规划或者中心扩散) 算法思路 算法思路: 回文串是一个正反读都相同的字符串,在本题中需要找到最长的回文子串。...首先考虑暴力解法,枚举所有可能的子串,并判断是否为回文串。时间复杂度为 O(n^3) ,无法通过本题。 因此可以使用动态规划和中心扩散两种方法来提高效率,其中较为简单的是中心扩散。...我们发现,回文串是以中心对称的,可以想到从每个字符作为中心,向两边扩展找出回文串,然后取长度最长的作为答案。在具体实现时,注意回文串长度可能是奇数或偶数,属于两种情况,需要分别考虑。...需要注意的是,在枚举中心点时需要分别处理回文子串长度为奇数和偶数的情况(即中间一个字符和中间两个字符),同时在扩展回文子串时需要判断左右指针是否越界,并且注意当前回文子串长度的计算方式。

    4700

    JPAHibernate问题汇总

    项目使用的是SpringBoot框架,JPA默认使用的是hibernate的实现,而hibernate的懒加载机制其实就是延迟加载对象,如果没有在session关闭前使用到对象里除id以外的属性时,就只会返回一个没有初始化过的包含了...因为对懒加载异常的发生有些好奇,所以看了下hibernate的源码,这里简单分析下,另外我看的是两个源码包如下: 1 2 spring-orm-5.1.5.RELEASE.jar hibernate-core...:95) 通过使用Hibernate提供的@NotFound(action = NotFoundAction.IGNORE)可以避免这个问题,该注解的默认值是NotFoundAction.EXCEPTION...使用@NamedEntityGraph和@EntityGraph来解决懒加载时SQL查询过多的问题,但是这种方法比较复杂。...这种场景需要在方法A调用方法B的地方使用try-catch捕获发生的异常,并且将该异常重新往外抛出,这样就可以让方法A事务回滚,且得到的异常也是真正的异常,而不是UnexpectedRollbackException

    2.6K20

    我理解的互联网应用和企业应用开发

    特别提示,像淘宝网,前台网站是互联网应用,供买家使用产品、订单模块属于企业应用。 对于一家B2C电子商务公司,往往既有前台的互联网应用,也有后台的业务系统。...比较复杂的业务系统,我们倾向于在需求分析阶段,开发用例图、领域模型图、序列图。当然,我也见过,很简单的业务系统也画一堆图,然后被开发人员扔到垃圾堆里,其实,一个excel功能需求表就可以解决。...对于互联网应用,界面即需求,往往不需要给业务需求建模:领域模型图和序列图等基本上没法用。性能和可伸缩性等非功能需求,可以以功能列表归纳。...可能还有技术经理TL,负责技术人员的绩效管理。 技术架构 做企业应用的那一套,如Hibernate,我是不建议用在互联网上的。...Hibernate的性能、级联查询,基本上在互联网上很难有作为。 如果用Java,我倾向于Spring MVC+Spring JDBC,前台做URLRewrite。

    63920

    Java EE开发四大常用框架

    ,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案 。    ...,您可以选用您所希望的框架来取代其子框架,例如您仍可以在Spring中整合您的Struts框架 。...由于本文只是一篇介绍性的文章,所以不会引入构建和使用Hibernate映射文档的具体例子(我在《Hibernate: A Developer's Notebook》一书的头几章中已经介绍了一个例子)。...而且还可以获得另一个好处,即代码不用关心要使用的数据库种类(否则的话甚至必须知道)。我所在的公司就曾有过在开发过程后期被迫更换数据库厂商的经历。...对于熟悉使用关系数据库和了解如何执行完美的SQL查询与企业数据库交互的人来说,Hibernate似乎有些碍手碍脚,这就像带有动力和自动排挡的快艇车会使注重性能的赛车驾驶员不耐烦一样。

    1.7K10

    想要面试BATJ,先做完这160道Java面试题~

    34、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制? 35、Java 中的final关键字有哪些用法? 36、数据类型之间的转换: 37、如何实现字符串的反转及替换?...38、怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 39、日期和时间: 40、打印昨天的当前时刻。 41、比较一下Java和JavaSciprt。...87、简述一下面向对象的"六原则一法则"。 88、简述一下你了解的设计模式。 89、用Java写一个单例类。 90、什么是UML? 91、UML中有哪些常用的图? 92、用Java写一个冒泡排序。...106、web.xml文件中可以配置哪些内容? 107、你的项目中使用过哪些JSTL标签? 108、使用标签库有什么好处?如何自定义JSP标签? 109、说一下表达式语言(EL)的隐式对象及其作用。...你用过的持久层框架有哪些? 126、Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗(两个线程能够共享同一个Session吗)?

    92320

    一篇 JPA 总结

    remove():类似于 Hibernate 中 Session 的 delete 方法,但此方法只可删除持久化对象,而 hibernate 的方法可以删除游离对象(不在缓存中,但在数据库中可能有对象,...关联关系映射(使用 IDEA 可以使用实体生成表,也可以使用对应的额表逆向生成实体类) 单向多对一(orders - customer) 表结构(oreders 表中有 customer 表的外键映射...JPQL 还支持二级缓存,order by 子句,group by 子句,聚合查询,having 子句,关联查询,子查询等,JPQL 还有大量函数,如字符串处理函数,算术函数和日期函数等功能,这里就不再一一列举...upper(String s):将字符串转换成大写形式。 length(String s):求字符串的长度。...通过 **@PesistenceContext** 注解标记成员变量 一览图 ? ? 以上就是我所学到有关 JPA 的知识,还望有用!再就是希望大牛们可以提点建设性的建议,共同进步,先谢谢了!

    5.6K20

    不会Spring,不谈就业——学习SSM和Spring Boot的三点建议

    01 Spring Boot和SSM的关系 如果你要问我,现在开发企业级的应用是否应该使用Spring Boot框架? 我的回答是肯定的。...简单来说,使用Spring Boot框架进行开发无非就是以下两个优点: 快速整合 自动配置 ▊ Spring Boot能做其他事情吗? 不能!...伴随着Spring Boot的广泛应用(正如前文我所推荐的,我也极力推荐使用Spring Boot),所以有一些菜鸟(尤其是那些刚工作几年的菜鸟)往往跟着以讹传讹地传递一个错误的观念:SSM过时了、Hibernate...、带有一定误导性的;其实学习者的学习方向也是错误的。...对于一个熟练的MyBatis使用者而言,他必须能熟练掌握各种查询方式、包括关联查询、子查询、存储过程调用等各种方式的SQL映射。

    89720

    大厂面试必备 | Java 最常见 200+ 面试题全面解析

    5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别?...8.String str="i"与 String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗?...115.hibernate 中如何在控制台查看打印的 sql 语句? 116.hibernate 有几种查询方式? 117.hibernate 实体类可以被定义为 final 吗?...151.rabbitmq 对集群节点停止顺序有要求吗? 十五、Kafka 152.kafka 可以脱离 zookeeper 单独使用吗?为什么? 153.kafka 有几种数据保留的策略?...160.zookeeper 怎么保证主从节点的状态同步? 161.集群中为什么要有主节点? 162.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?

    63630

    Java 最常见的 200+ 面试题:面试必备「建议收藏」

    5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别?...8.String str=”i”与 String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗?...115.hibernate 中如何在控制台查看打印的 sql 语句? 116.hibernate 有几种查询方式? 117.hibernate 实体类可以被定义为 final 吗?...151.rabbitmq 对集群节点停止顺序有要求吗? 十五、Kafka 152.kafka 可以脱离 zookeeper 单独使用吗?为什么? 153.kafka 有几种数据保留的策略?...160.zookeeper 怎么保证主从节点的状态同步? 161.集群中为什么要有主节点? 162.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?

    31610

    使用spring validation完成数据后端校验

    我在之前保险产品研发过程中,系统对数据校验要求比较严格且追求可变性及效率,曾使用drools作为规则引擎,兼任了校验的功能。...而在一般的应用,可以使用本文将要介绍的validation来对数据进行校验。 简述JSR303/JSR-349,hibernate validation,spring validation之间的关系。...而万能的spring为了给开发者提供便捷,对hibernate validation进行了二次封装,显示校验validated bean时,你可以使用spring validation或者hibernate...理论上我们既可以使用Hibernate Validation提供Validator,也可以使用Spring对其的封装。...,注入其他校验工具,完成组合校验(如前后密码一致)等等操作,但是寻求一个易用性和封装复杂性之间的平衡点是我们作为工具使用者应该考虑的,我推崇的方式,是仅仅使用自带的注解和自定义注解,完成一些简单的,可复用的校验

    3.1K120

    面试官:java 最常见面试题 200+ 汇总

    5.java 中的 Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别?...8.String str="i"与 String str=new String("i")一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗?...115.hibernate 中如何在控制台查看打印的 sql 语句? 116.hibernate 有几种查询方式? 117.hibernate 实体类可以被定义为 final 吗?...151.rabbitmq 对集群节点停止顺序有要求吗? 十五、Kafka 152.kafka 可以脱离 zookeeper 单独使用吗?为什么? 153.kafka 有几种数据保留的策略?...160.zookeeper 怎么保证主从节点的状态同步? 161.集群中为什么要有主节点? 162.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?

    49910
    领券