Hibernate为什么提供了延迟加载?起什么作用?

 我来答
一眼万万年_
2011-08-29 · TA获得超过1355个赞
知道小有建树答主
回答量:310
采纳率:0%
帮助的人:171万
展开全部
提高效率,主要是对属性(在数据库中存在相应的表)进行延迟加载(load),在第一次查询的时候,只查询当前的表,当用到延迟加载的对象时(非延迟加载会查询所有关联属性的表),会先从缓存中去找延迟加载的对象(如果session已经关闭,会抛出SessionClosedException),如果对象已经在缓存中,则直接从缓存获取,如果对象不在缓存中,则进入数据库查找,所以,延迟加载是为了提高效率,如果在hibernate映射文件lazy设置成false,用load则和用get效果一样
程序那点事
2011-08-29 · TA获得超过6140个赞
知道大有可为答主
回答量:3253
采纳率:59%
帮助的人:1331万
展开全部
延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
toto71229
2011-08-29 · TA获得超过808个赞
知道小有建树答主
回答量:513
采纳率:0%
帮助的人:467万
展开全部
非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来。
Hibernate提供的延迟加载机制。这种初始化策略只在一个对象调用它的一对多或多对多关系时才将关系对象读取出来。
这个过程对开发者来说是透明的,而且只进行了很少的数据库操作请求,因此会得到比较明显的性能提升。这项技术的一个缺陷是延迟加载技术要求一个Hibernate会话要在对象使用的时候一直开着。

参考资料: http://www.itpub.net/thread-1311247-1-1.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
若amp惜
2011-08-29 · TA获得超过229个赞
知道小有建树答主
回答量:286
采纳率:100%
帮助的人:142万
展开全部
我遇到的是多表关联是,比如延迟加载=true,那么读取到得数据暂时只是一个表的。如果不是延迟加载,那么多表数据同时读出来。只是提供一个是否当需要时在加载还是提前加载完。延迟加载的意义同楼上说的一样。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式