Hibernate懶加載

  • 面試題 getload方法區別?面試

get: 及時加載,只要調用get方法馬上向數據庫查詢sql

load:默認使用懶加載,當用到數據的時候才向數據庫查詢。 數據庫

 

  • 懶加載:(lazy)session

概念:當用到數據的時候才向數據庫查詢,這就是hibernate的懶加載特性。spa

                 目的:提供程序執行效率!hibernate

  • lazy 代理

        true   使用懶加載對象

        false   關閉懶加載get

        extra   (在集合數據懶加載時候提高效率)it

在真正使用數據的時候才向數據庫發送查詢的sql

若是調用集合的size()/isEmpty()方法,只是統計,不真正查詢數據!

                        

 

  • 懶加載異常

  • Session關閉後,不能使用懶加載數據!

  • 若是session關閉後,使用懶加載數據報錯:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

                 如何解決session關閉後不能使用懶加載數據的問題?

                          // 方式1 先使用一下數據

                 //dept.getDeptName();

                // 方式2:強迫代理對象初始化

                 Hibernate.initialize(dept);

                // 方式3:關閉懶加載

                         設置lazy=false;

                 // 方式4 在使用數據以後,再關閉session

相關文章
相關標籤/搜索