[color=red]檢索策略[/color]包括 立即檢索 延遲檢索 迫切左外連線
類級別的可以用立即檢索和延遲檢索
關聯級別可用以上三種。
延遲檢索的原理是動態生成要檢索的類的**類的例項,這個**類繼承了要檢索的類,有相關的類資訊等,並且之初始化它的oid屬性(即查詢條件),其他屬性皆為null,這樣占用很少記憶體。
可以用hibernate的靜態方法initialize()在session範圍內來顯式的初始化。
if(!hibernate.isinitialized())
hibernate.initialize(obj)
這樣在session關閉後就可以用obj例項的get等方法。
有點需要注意的就是:
不論配置的lazy是否是true,session的get方法,query的list方法總是立即檢索該物件(但是不會立即檢索關聯物件)。
增強延遲檢索:。。。。。。
[color=red]檢索方式[/color]
hql qbc(query by critiera) qbe(query by exampl)
qbc的分頁查詢:setfirstresult setmmaxresult
檢索大哥物件:uniqueresult
hql qbc 設定清理快取模式 setflushmode()
設定與session二級快取的互動模式setcachemode(讀取,寫入,重新整理,正常,忽略)
還可以在對映檔案中定義命名查詢語句,並用session.getnamedquery("asd")來呼叫。
load與get方法的區別:
load:如果資料庫中不存在與oid對應的記錄,則丟擲異常。([color=red]個人認為是因為load要建立查詢物件的**物件[/color])
get:沒有則返回null
[color=red]get方法原始碼[/color] public object get(string entityname, serializable id) throws hibernateexception
finally
}[color=red]load方法原始碼[/color]
public object load(string entityname, serializable id) throws hibernateexception
success = true;
return event.getresult();[/color] }
finally
}
Hibernate 檢索策略
在預設情況下,當hibernate從資料庫中載入物件時,會同時載入所有關聯的物件.但實際應用中可能不需要使用其關聯的物件,這樣就可能通過設定hibernate的檢索策略,來優化檢索效能.hiberante提供了3種檢索策略 1 立即檢索 2 延遲檢索 3 迫切左外連線檢索 下面先從概念上去理解,先在...
Hibernate檢索策略
預設的檢索策略是立即檢索。在hibernate對映檔案中,通過在上配置 lazy屬性來確定檢索策略。對於session的檢索方式,類級別檢索策略僅適用於load方法 也就說,對於get qurey檢索,持久化物件都會被立即載入而不管lazy是false還是true.一般來說,我們檢索物件就是要訪問它...
hibernate 檢索策略
本文主要是學習hibernate的檢索策略 1 類級別的檢索策略有兩種一種是立即檢索,一種是延遲檢索,僅影響load操作 立即檢索,是類的預設檢索方式,或者設定了lazy false 也是立即檢索方式,即執行load操作之後會立馬返回相應的資料。延遲檢索,當類設定lazy true 時,hibern...