hibernate lazy load 是实用hibernate不可避免的问题,在级联关系中指向one的fetchType默认为eager,指向mangy方向fetchType默认为lazy;eager表示加载本数据的同时会自动加载级联数据,lazy表示只关心本数据。
public class Person{ private String name; private String sex; @ManyToOne private Team team; } public class Team{ private String no; @OneToMany private Set<Person> members; }
例,默认情况下,加载Person时除了会读取‘person’表的内容还会主动读取‘team’表的内容,加载Team时只读取‘team’表的内容。
有时候我们需要在获取team时也要team.memebers,这时有三种方案可以达到目的:
1.定义fetchType的值为eager
@OneToMany(fetch=FetchType.eager)
private Set<Person> members;
2.openSessionInView
配置OpenSessionInView这个Filter,将Hibernate session的生命周期延长直至服务器返回数据给客户端
3.HIbernate initialize
在service 层调用Hibernate的initialize方法,强制加载级联的内容(team.members)
方案1执行起来简单粗暴,如果级联关系比较复杂时,会一次查询引发很多次查询,会导致服务器反应过慢,影响性能;
方案2范围太广,自主控制强度小;建议使用方案3.
相关推荐
hibernate懒加载策略.dochibernate懒加载策略.doc
深入理解hibernate懒加载技术,正确使用懒加载
hibernate抓取策略和懒加载案例,供大家下载查看。大家都知道,hibernate都设计到一个优化问题。
Hibernate延迟加载以及利用Spring 大家看看 参考一下
去除预加载的Viewpager,加载第一页时不会默认加载第二页,
主要介绍了浅谈解决Hibernate懒加载的4种方式,具有一定借鉴价值,需要的朋友可以参考下。
解决org.hibernate.LazyInitializationException: could not initialize proxy - no Session...
详细介绍hibernate延迟加载,对hibernate初学者有一定的帮助
hibernate延迟加载解决 延迟加载的具体解决方法
jsp中关于Hibernate延时加载的问题,实例源代码,详解都有
Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载。Hibernate 通过这种延迟加载来降低系统的内存开销,从而保证 Hibernate 的运行性能。
Hibernate延迟加载机制.zip
Hibernate延迟加载Hibernate延迟加载
关于hibernate延迟加载,有很好的参考价值
Hibernate延迟加载介绍.doc
Hibernate 延迟加载
hibernate延迟加载技术详细解 ,http://www.che2.com/提供
Hibernate延时加载与lazy机制.docHibernate延时加载与lazy机制.doc