qubianzhong
Hibernate 的延迟加载(懒加载)简介1
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
qubianzhong
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
Hibernate 的延迟加载(懒加载)简介1
Hibernate 的延迟加载(懒加载)简介1
qubianzhong
关注
发布于 2018-08-10 16:48:39
1.3K
0
发布于 2018-08-10 16:48:39
举报
文章被收录于专栏:
行者常至
行者常至
什么是延迟加载:
在使用某些Hibernate方法查询数据时,Hibernate返回的只是一个空对象(除id外属性都为null),并没有真正查询数据库。而在使用这个对象时才会触发查询数据库,并将查询到的数据注入到这个空对象中。这种将查询时机推迟到对象访问时的机制称之为延迟加载。
为什么要使用延迟加载:
可以提升内存资源的使用率
可以降低对数据库的访问次数
采用延迟加载的方法:
session.load()
查询时不进行SQL查询,在使用对象时才执行SQL查询;效率高
query.iterate()
在查询时只查询了ID,而只有在使用对象时才会查询对象的完整信息,每用一个对象查询一次,增加了查询次数;效率低
关联映射中对关联属性的加载
one-to-one
(元素)懒加载 : 必须同时满足下面三个条件时才能实现懒加载 (主表不能有constrained=ture,所以主表没有懒加载) (1)、
lazy!=false
(2)、
consetrained=ture
(3)、
fetch=select
one-to-many
(元素)懒加载: (1)、
lazy!=false
(2)、
fetch=select
many-to-one
(元素) : (1)、
lazy!=false
(2)、
fetch=select
many-to-many
(元素) : (1)、
lazy!=false
(2)、
fetch=select
注意:
能够懒加载的对象都是被改写过的代理对象
.
当相关联的
session没有关闭
时.
访问这些懒加载对象
(
代理对象
)的属性(getId和getClass除外);
hibernate会初始化这些代理
.或
用Hibernate.initialize(proxy)来初始化代理对象
当相关联的session关闭后,在访问懒加载的对象将出现异常
Lazy
:指相关联的属性什么时候抓取
Fetch
:通过什么方式来进行抓取 select二次select语句查询 Join连接查询,lazy属性就不起作用
使用延迟加载需要注意的问题
采用具有延迟加载机制的操作,需要避免Session提前关闭,避免在使用对象之前关闭session。
可以采用以下两种方法解决此问题
采用非延迟加载的查询方法,如query.get()、session.list()等。
在使用对象之后再关闭session。
Open session in view
在项目中,DAO只是负责查询出数据,而使用数据的时机是在JSP解析的过程中,因此要避免在DAO中关闭session,或者说要在视图层保持session的开启。
项目中解决这个问题的手段称之为Open session in view,即在视图层保持session的开启。
在不同的技术框架下,实现Open session in view的手段不同:
在Servlet中使用过滤器实现
在Struts2中使用拦截器实现
在Spring中使用AOP实现
延迟加载实现原理
采用延迟加载方法,返回的对象类型是Hibernate采用CGLIB技术在内存中动态生成的类型,该类型是原实体类的子类,并在子类中重写了属性的get方法。
本文参与
腾讯云自媒体分享计划
,分享自作者个人站点/博客。
原始发表:2015年07月23日,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
其他
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体分享计划
,欢迎热爱写作的你一起参与!
其他
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
关注
文章
0
获赞
0
目录
什么是延迟加载:
为什么要使用延迟加载:
采用延迟加载的方法:
注意:
使用延迟加载需要注意的问题
Open session in view
延迟加载实现原理
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐