Hibernate 十一 檢索

2021-09-06 21:48:06 字數 1431 閱讀 1172

get和load的區別:

get不支援延遲載入,而load支援。

當查詢特定的資料庫中不存在的資料時,get會返回null,而load則丟擲異常。

類(class)的延遲載入:

設定標籤中的lazy="true",或是保持預設(即不配置lazy屬性)

如果lazy的屬性值為true,那麼在使用load方法載入資料時,只有確實用到資料的時候才會發出sql語句;這樣有可能減少系統的開銷。

//不會發出查詢sql

system.out.println("group id=" + group.getid());

這裡有乙個問題,為什麼載入主鍵的時候不需要發出sql語句。

將不執行select 查詢,而是建立了group類的**類例項,僅初始化oid屬性,

在訪問group類的oid主鍵屬性時不會查詢資料庫

只有在第一次訪問非oid屬性時,才會執行sql查詢資料庫

lazy,延遲載入

lazy的有效期:只有在session開啟的時候才有效;session關閉後lazy就沒效了。

5.1、lazy策略可以用在:

5.2、設定集合上的lazy=false

並不會去載入整個集合的資料,而是發出一條聰明的sql語句,以便獲得需要的值,只有在真正需要用到這些集合元素物件資料的時候,才去發出查詢語句載入所有物件的資料

5.3、hibernate單端關聯懶載入策略:即在/標籤上可以配置

注意:在class標籤上配置的lazy屬性不會影響到關聯物件!!!

Hibernate 十一 檢索

get和load的區別 get不支援延遲載入,而load支援。當查詢特定的資料庫中不存在的資料時,get會返回null,而load則丟擲異常。類 class 的延遲載入 設定標籤中的lazy true 或是保持預設 即不配置lazy屬性 如果lazy的屬性值為true,那麼在使用load方法載入資料...

Hibernate 檢索策略

在預設情況下,當hibernate從資料庫中載入物件時,會同時載入所有關聯的物件.但實際應用中可能不需要使用其關聯的物件,這樣就可能通過設定hibernate的檢索策略,來優化檢索效能.hiberante提供了3種檢索策略 1 立即檢索 2 延遲檢索 3 迫切左外連線檢索 下面先從概念上去理解,先在...

Hibernate檢索策略

預設的檢索策略是立即檢索。在hibernate對映檔案中,通過在上配置 lazy屬性來確定檢索策略。對於session的檢索方式,類級別檢索策略僅適用於load方法 也就說,對於get qurey檢索,持久化物件都會被立即載入而不管lazy是false還是true.一般來說,我們檢索物件就是要訪問它...