1. 程式人生 > >hibernate——load()方法解決懶載入的問題

hibernate——load()方法解決懶載入的問題

load()方法與get()方法不同,get()即使Session關閉之後,也可以使用物件,而load()方法在Session關閉之後,會出現懶載入的問題,出現的問題如下:

這個問題解決方法如下:

找到你的XXX.hbm.xml在class中加入一個屬性:lazy,lazy的內容為false,如下:


<class name="com.entity.user" table="USER" lazy="false">
        <id name="id" type="java.lang.String">
            <column name="ID" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="pwd" type="java.lang.String">
            <column name="PWD" />
        </property>
</class>

無論是load還是get,都會查詢快取(一級快取),如果沒有才會去資料庫查詢,呼叫clear()方法強制清除session快取,使用程式碼如下:

@Test
	public void clear() {
		user t = (user) session.get(user.class, "123");  
	    System.out.println(t.getName());
	    //clear()方法用來清除session的快取
	    session.clear();//這裡不clear只會執行一次sql語句,有clear會執行2次  
	    user t2 = (user) session.get(user.class, "123");  
	    System.out.println(t2.getName());  
	}