hibernate中的懶加載和急加載

  懶加載(FatchType.LAZY)是Hibernate爲提升程序執行效率而提供的一種機制,簡單說就是隻有正真使用其屬性的時候,數據庫纔會進行查詢。數據庫

  具體的執行過程就是:Hibernate從數據庫獲取某一個對象數據時、獲取某一個對象的集合屬性值時,或獲取某一個對象所關聯的另外一個對象時,因爲沒有使用該對象的數據,Hibernate並非數據庫加載真正的數據,而只是爲該對象建立一個代理對象來表明這個對象,這個對象上的全部屬性都是默認值;只有在真正須要使用該對象的數據時才建立這個真實對象,真正從數據庫中加載它的數據,這樣在某些狀況下,就能夠提升查詢效率。session

  注意:.可以懶加載的對象都是被改寫過的代理對象,當相關聯的session沒有關閉時,訪問這些懶加載對象(代理對象)的屬性hibernate會初始化這些代理,或當相關聯的session關閉後,再訪問懶加載的對象將出現異常。spa

 

  急加載(FatceType.EAGER)在加載一個實體時,會當即從數據庫中查詢,與其關聯的類也會被同時查詢hibernate

   

  區別:若是使用急加載程序會在第一次運行是把數據加載到內存會消耗一段時間,日後運行查找就會很快;代理

      懶加載會如今內存中存儲查詢當前的表,相關聯的表則會在真正查找的時候,進行查詢;對象

相關文章
相關標籤/搜索