天天看點

Hibernate的加載機制

Hibernate的懶加載

        所謂懶加載(lazy)就是延時加載,延遲加載

        延遲加載是一種機制,主要是解決不必要的查詢對資源的浪費,隻有當資料真正調用時才加載,而不會對資料進行提前加載造成資源的浪費。

        什麼時候用懶加載呢,就是當我們要通路的資料量過大時,明顯用緩存不太合适,因為記憶體容量有限,為了減少并發量,減少系統資源的消耗,我們讓資料在需要的時候才進行加載,這時我們就用到了懶加載。

        比如一個公司的部門和員工,部門與員工是1對多的關系,如果lazy設定為false,那麼隻要加載了一個部門員工資訊,就會根據一對多配置的關系把所有員工的資訊也加載出來。但是實際上有時候隻是需要用到部門的資訊,不需要用的員工的資訊,這是員工的資訊加載就等于浪費記憶體資源,如果lazy設定為true,那麼隻有當你通路員工資訊時候才會去加載員工的資訊。

        Hibernate中主要是通過代理(proxy)機制來實作延遲加載。它的具體過程:

        Hibernate從資料庫擷取某一個對象資料時、擷取某一個對象的集合屬性值時,或擷取某一個對象所關聯的另一個對象時,由于沒有使用該對象的資料,hibernate并不是資料庫加載真正的資料,而隻是為該對象建立一個代理對象來代表這個對象,這個對象上的所有屬性都是預設值;隻有在真正需要使用該對象的資料時才建立這個真實對象,真正從資料庫中加載它的資料,這樣在某些情況下,就可以提高查詢效率。

轉載于:https://my.oschina.net/u/4169647/blog/3081776