标签:懒加载、opensessioninview、hibernate、异常
【什么是Hibernate懒加载异常】
我们所说的懒加载也被称为延迟加载,它在查询的时候不会立刻访问数据库,而是返回代理对象,当真正去使用对象的时候才会访问数据库,可以有效的降低数据库访问次数和内存使用量。懒加载为Hibernate中比较常用的特性之一,Hibernate 通过默认采取懒加载机制来降低系统的内存开销,提高系统性能。但这也使很多初学者使用Hibernate时容易出现懒加载异常。
【出现懒加载异常的原因】
这个异常出现的原因主要是使用懒加载机制加载数据时,hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用 getXXX()调用的时候,hiberante会利用这个保存的方法去从数据库中取数据。而往往我们在jsp页面中使用getXXX()准备展示数据的时候,而此时session已关闭,所以就会出现异常,如图所示:
【懒加载异常解决方案】
1、lazy设成false,
利用lazy=false来解决问题,这种方法是很好用,但是在实际的过程并不实用,因为这就不能使用懒加载带来的好处了,违背了Hibernate默认使用懒加载的初衷。
2、自己写过滤器,实现OpenSessionInView。
3、使用Spring提供的OpenSessionInViewFilter过滤器。
4、使用Spring提供的OpenSessionInViewInterceptor
Hibernate懒加载异常解决方案总结,布布扣,bubuko.com
标签:懒加载、opensessioninview、hibernate、异常
原文地址:http://745761505.blog.51cto.com/9241055/1538735