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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章