Hibernate懒加载异常解决方案总结

【什么是Hibernate懒加载异常】

    我们所说的懒加载也被称为延迟加载,它在查询的时候不会立刻访问数据库,而是返回代理对象,当真正去使用对象的时候才会访问数据库,可以有效的降低数据库访问次数和内存使用量。懒加载为Hibernate中比较常用的特性之一,Hibernate 通过默认采取懒加载机制来降低系统的内存开销,提高系统性能。但这也使很多初学者使用Hibernate时容易出现懒加载异常。

【出现懒加载异常的原因】

    这个异常出现的原因主要是使用懒加载机制加载数据时,hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用 getXXX()调用的时候,hiberante会利用这个保存的方法去从数据库中取数据。而往往我们在jsp页面中使用getXXX()准备展示数据的时候,而此时session已关闭,所以就会出现异常,如图所示:

wKiom1PoxTnS3DKcAADIAQAYr-Q347.jpg

【懒加载异常解决方案】

    1、lazy设成false,

    利用lazy=false来解决问题,这种方法是很好用,但是在实际的过程并不实用,因为这就不能使用懒加载带来的好处了,违背了Hibernate默认使用懒加载的初衷。

    2、自己写过滤器,实现OpenSessionInView。

wKioL1PoybKwxLqtAAPNLRrCDaM933.jpg


    3、使用Spring提供的OpenSessionInViewFilter过滤器

wKiom1Poyt7xBDcdAAGuVzYaDlE027.jpg

        4、使用Spring提供的OpenSessionInViewInterceptor

wKiom1PozX6AWBkRAAGh107VomI801.jpg


你可能感兴趣的:(Hibernate,异常,懒加载)