文档章节

关于hibernate的延迟加载问题

BK灬
 BK灬
发布于 2015/07/31 17:34
字数 562
阅读 258
收藏 7

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

为什么需要延迟加载?

因为会提高效率嘛,存在即合理,哈哈.一般设置延迟加载就是在对象关系映射上(在多的一方).如下图:

一个用户有多个消费纪录。

设置成lazy后,查询数据的时候只会取出消费记录(多的一方),不会查询用户(这不就提高效率了吗,也就是关联数据不会查询数据库),但是另一个问题又来了,我要查询数据库的时候把关联的数据查询出来怎么办?如下图:

需要查询的时候将关联的数据再查询一次.

百度上是这么写的:

如果是EAGER,那么表示取出这条数据时,它关联的数据也同时取出放入内存中.(一次都查询出来所有数据)

如果是LAZY,那么取出这条数据时,它关联的数据并不取出来,在同一个session中,什么时候要用,就什么时候取(再次访问数据库)。

科普一下:

1、FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。

2、FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。

3、比方User类有两个属性,name跟address,就像百度知道,登录后用户名是需要显示出来的,此属性用到的几率极大,要马上到数据库查,用急加载;而用户地址大多数情况下不需要显示出来,只有在查看用户资料是才需要显示,需要用了才查数据库,用懒加载就好了。所以,并不是一登录就把用户的所有资料都加载到对象中,于是有了这两种加载模式。

总结:有关系对象映射的时候,需要设置延迟加载(多的一方).可以提高效率.

 

© 著作权归作者所有

BK灬

BK灬

粉丝 46
博文 345
码字总数 142921
作品 0
朝阳
后端工程师
私信 提问
加载中

评论(3)

BK灬
BK灬 博主

引用来自“songtony”的评论

总结的不错!
谢谢了
BK灬
BK灬 博主

引用来自“songtony”的评论

总结的不错!
谢谢,没事常来,小弟刚出道不久!
蚂蚁搬五岳
蚂蚁搬五岳
总结的不错!
Hibernate异常:could not initialize proxy - the ow...

延迟初始化错误是运用Hibernate开发项目时最常见的错误。如果对一个类或者集合配置了延迟检索策略,那么必须当代理类实例或代理集合处于持久化状态(即处于Session范围内)时,才能初始化它。...

mj4738
2011/12/04
180
0
Hibernate get load 区别 误区

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://www.blogbus.com/fallenlord-logs/57543854.html 最近面试别人,正好出的笔试题中有道关于Hibernate延迟加载的问...

alexgaoyh
2014/03/07
340
0
hibernate 延迟加载问题探讨

关于lazy机制: 延迟初始化错误是运用Hibernate开发项目时最常见的错误。如果对一个类或者集合配置了延迟检索策略,那么必须当代理类实例或代理集合处于持久化状态(即处于Session范围内)时...

ddtt
2011/12/20
265
1
hibernate 如何实现延迟加载

延迟加载: 延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了 对实体对象的延迟加载以及对集合...

bowl154
2010/12/17
149
2
OpenSessionInViewFilter 对 lazy 加载 的配置及作用

spring为我们解决hibernate的Session的关闭与开启问题。 问题: Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果...

JackMo2015
2016/11/28
27
0

没有更多内容

加载失败,请刷新页面

加载更多

一篇文章教你轻松使用fastjson

前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y JSON相信大家对他也不陌生了,前后端交互中常常就以JSON来进行数据交换。而有的...

Java3y
34分钟前
4
1
分组功能(tapply,by,aggregate)和* apply系列

每当我想在R中做“ map” py任务时,我通常都会尝试在apply系列中使用一个函数。 但是,我从未完全理解它们之间的区别-{ sapply , lapply等}如何将函数应用于输入/分组输入,输出将是什么样...

javail
35分钟前
4
0
PHP环境搭建之单独安装

还在使用PHP集成环境吗?教你自定义搭建配置PHP开发环境,按照需求进行安装,安装的版本可以自己选择,灵活性更大。 目录: 1. 安装Apache 2. 安装PHP 3. 安装MySQL 4. 安装Composer 观看:h...

不冷的大叔
46分钟前
4
0
为什么JavaScript变量会以美元符号开头?

我经常看到JavaScript带有以美元符号开头的变量。 您何时/为什么选择以这种方式为变量添加前缀? (我不是在问您在jQuery和其他语言中看到的$('p.foo')语法,而是普通变量,例如$name和$orde...

技术盛宴
50分钟前
4
0
TCP 三次握手

https://my.oschina.net/u/4198159/blog/3141874

奋斗的小牛
59分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部