hibernate之檢索策略與檢索方式

2021-09-01 04:10:23 字數 1269 閱讀 1833

[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...