hibernate懶載入用法和好處
阿新 • • 發佈:2018-12-30
懶載入(延遲載入): 只有持久狀態的物件才能懶載入 ||瞬時狀態(不用的時候被垃圾回收處理) ||持久狀態(經過session管理的這些物件持久狀態的物件,例如:save get update 被它操作過的物件) ||遊離狀態(session.close(),flush clear commit 後變成遊離狀態) 瞬時->持久狀態->遊離狀態 get是立即載入,load是懶載入 當真正需要資料的時候,hibernate才從資料庫中載入資料 記憶體更有效率的使用 1:關聯級別 2:類級別 3:屬性級別 在配置檔案中 可以在下面三個標籤中(class ,property ,set )新增屬性:lazy=“true”來開啟懶載入,預設是true,可設定為false 來關閉懶載入; <hibernate-mapping> <class name="com.entity.Orders" table="ORDERS" schema="STARRY"> <id name="orid" type="java.lang.Long"> </id> <property name="address" type="java.lang.String"> </property> <set name="goodses" table="OANDG" schema="STARRY"> </set> </class> </hibernate-mapping> 然後在使用get,load方法的時候: Orders order =(Orders) se.get(Orders.class,3l); Set<Goods> set =order.getGoodses(); 上面這段程式碼:註釋第二行的時候,會產生一條select語句,已經載入過了,執行兩條完成會產生兩條select語句 Orders order =(Orders) se.load(Orders.class,3l); Set<Goods> set =order.getGoodses(); 上面這段程式碼:註釋第二行的時候,不會產生select語句,已經載入過了,執行兩條完成會產生一條select語句 懶載入的好處: 為了減少併發量,減少系統資源的消耗,我們讓資料在需要的時候才進行載入,這時我們就用到了懶載入。