Hibernate为什么提供了延迟加载?起什么作用?
4个回答
展开全部
提高效率,主要是对属性(在数据库中存在相应的表)进行延迟加载(load),在第一次查询的时候,只查询当前的表,当用到延迟加载的对象时(非延迟加载会查询所有关联属性的表),会先从缓存中去找延迟加载的对象(如果session已经关闭,会抛出SessionClosedException),如果对象已经在缓存中,则直接从缓存获取,如果对象不在缓存中,则进入数据库查找,所以,延迟加载是为了提高效率,如果在hibernate映射文件lazy设置成false,用load则和用get效果一样
展开全部
延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来。
Hibernate提供的延迟加载机制。这种初始化策略只在一个对象调用它的一对多或多对多关系时才将关系对象读取出来。
这个过程对开发者来说是透明的,而且只进行了很少的数据库操作请求,因此会得到比较明显的性能提升。这项技术的一个缺陷是延迟加载技术要求一个Hibernate会话要在对象使用的时候一直开着。
Hibernate提供的延迟加载机制。这种初始化策略只在一个对象调用它的一对多或多对多关系时才将关系对象读取出来。
这个过程对开发者来说是透明的,而且只进行了很少的数据库操作请求,因此会得到比较明显的性能提升。这项技术的一个缺陷是延迟加载技术要求一个Hibernate会话要在对象使用的时候一直开着。
参考资料: http://www.itpub.net/thread-1311247-1-1.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我遇到的是多表关联是,比如延迟加载=true,那么读取到得数据暂时只是一个表的。如果不是延迟加载,那么多表数据同时读出来。只是提供一个是否当需要时在加载还是提前加载完。延迟加载的意义同楼上说的一样。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询