1. 程式人生 > >hibernate懶載入用法和好處

hibernate懶載入用法和好處

懶載入(延遲載入):
	只有持久狀態的物件才能懶載入
	||瞬時狀態(不用的時候被垃圾回收處理)
	||持久狀態(經過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語句


懶載入的好處:
為了減少併發量,減少系統資源的消耗,我們讓資料在需要的時候才進行載入,這時我們就用到了懶載入。