Rest风格中关于JPA使用懒加载的坑
公司最近使用的ORM框架是JPA实现产品使用的是hibernate,曾经看过一篇博客上面说的是如果团队里面没有一个精通hibernate的人,那么最好不要使用它,我现在是深刻的体会到了。但是使用什么框架不是我能决定的,如果是我的话,我宁愿使用mybatis。吐槽完来讲讲出现的问题,因为我们项目是一个电商的项目模块比较多,所以各种表关联。
用了一段时间以后,我们发现非常的慢,打开一个页面要20多秒==!,后台一直打印sql,我们在实体上面注解的LAZY看似并没有起什么作用。各种调试各种百度但是一直找不到原因。
后面今天实现受不了了。我静下来仔细分析了一下,各种调试以后,我突然意识到,我们的项目和一起拿的项目不一样的地方在于现在这个项目全部是使用rest风格的。而以往只要使用了懒加载那么页面上使用到了,才会查询,因为是使用到了jsp模板,是动态的编译的,说白一点就是其实jsp就是JAVA代码。但是我们的不一样,我们的将资源全部进行序列化操作,然后通过json将数据给传输到客户端,那么在序列化的时候,就会将所有的实体给进行序列化。大概知道原因了以后,我的做法就是在返回的时候,动态的指定哪一些实体不需要序列化,对于那种互相关联的也忽略一边。再进行一遍操作的时候,果然不会那么慢了,最多一秒就出来了。我觉得这个坑还是必须注意一下的,不过我觉得还是没有一个精通hibernate的人的原因。
这个就当自己的一个总结吧,我觉得,对于技术选型一定要考虑具体情况,并不是好别人觉得好用就选什么。最后说一句,团队没有hibernate大神,还是少用,会被坑的要死要死的。
Rest风格中关于JPA使用懒加载的坑相关推荐
- 在 Swift 中使用闭包实现懒加载
本文讲的是在 Swift 中使用闭包实现懒加载, 原文地址:Swift Lazy Initialization with Closures 原文作者:Bob Lee 译文出自:掘金翻译计划 译者:ls ...
- fetchtype 动态控制_hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法
对这种懒加载问题,最后的做法是利用Spring提供的一个针对Hibernate的一个支持类,其主要意思是在发起一个页面请求时打开Hibernate的Session,一直保持这个Session,使得Hi ...
- java懒加载注解_在springboot中实现个别bean懒加载的操作
懒加载---就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. @Lazy 在需要懒加载的bean上加上@Lazy ...
- JPA/hibernate懒加载原理分析及JSON格式API反序列化时连环触发懒加载问题的解决
什么是懒加载 JPA是java持久层的API,也就是java官方提供的一个ORM框架,Spring data jpa是spring基于hibernate开发的一个JPA框架.Spring data j ...
- scala中给集合创建懒加载view视图
Problem 你正在使用一个巨大的集合,并且想创建一个懒加载的版本.只有在计算或者返回结果时才真正被调用. Solution 除了Stream类,不论什么时候你创建一个Scala集合类的实例,你都创 ...
- [译]带你揭开Kotlin中属性代理和懒加载语法糖衣
翻译说明: 原标题: How Kotlin's delegated properties and lazy-initialization work 原文地址: https://medium.com/t ...
- element中树形数据与懒加载实现全部展开和全部收起
element中属性懒加载数据 default-expand-all属性::是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 如果在表格头上加上一个按钮实现全部展开与收起 类似如 ...
- Android多个fragment懒加载的坑(卡顿)
在Android开发中,有很多种情况都是viewpage+fragment左右滑动进行布局的,例如下面的今日头条 在今日头条app上,我们可以看到,其顶部都是一栏的类型数据源,可滑动,可联动下面的vi ...
- hibernate中延迟加载的设定(懒加载的设定)
User.hbm.xml: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernat ...
- mui ajax 懒加载,MUI框架运用中遇见问题总结
H5在移动端的开发趋势化越来越大,相对App来说,H5优势有: 跨平台,兼容性强 开发速度快,成本较低 迭代周期短 技术成本低 但当我们在开始移动端的项目开发时,又愁着有什么样的好的UI框架能让我们减 ...
最新文章
- 《书都不会读,你还想成功》
- s5pv210运行裸机程序的方法之在SDRAM(DDR2)中运行
- 从 OSS 装载数据到 PostgreSQL
- 拓展编辑器(五)_监听事件
- 51. ExtJs4之Ext.util.JSON编码和解码JSON对象
- 【MongoDB】增删改查基本操作
- python if语句
- SAP ABAP Netweaver服务器的标准登录方式讲解
- 秀操作:函数宏的三种封装方式
- 算法 - 二分查找(非递归实现二分查找)
- leetcode —— 207. 课程表
- c语言自己编译自己,TCC研究(一): Tiny C Compiler最小的C语言编译器,自己编译自己...
- 【jQuery笔记Part1】11-jQuery选择器
- 降低人工智能成本50% 阿里云推出新一代异构实例GN5i
- ubuntu16.04 创建配置并使用虚拟环境
- AD10 PCB等长布线----蛇形布线
- 会计实务综合模拟计算机实训心得,模拟企业会计实训心得体会
- hibernate 数据分页显示 及 分页导航栏的设置
- 【Git】Git的“隐身术”:git status/git diff……文件被忽略的秘密
- dp主机_DP接口与HDMI接口的区别?