hibernate懶載入原理

2021-07-30 09:21:43 字數 1009 閱讀 7984

懶載入的意思是查詢的時候不會立刻訪問資料庫,而返回的是**物件,當真正去使用物件欄位的時候才會訪問資料庫。

load(object, serializable)

前提實體類不能是final的。根據id查詢 。查詢返回的是

**物件,不會立刻訪問資料庫,是懶載入的。當真正去使用物件的時候才會訪問資料庫。

用load的時候會發現不會列印出查詢語句,而使用get的時候會列印出查詢語句。

使用load時如果在session關閉之後在查詢此物件,會報異常:could not initialize proxy - no session。處理辦法:在session關閉之前初始化一下查詢出來的物件:

hibernate.initialize(user);

使用load可以提高效率,因為剛開始的時候並沒有查詢資料庫。但很少使用。

一、一對一的懶載入分析

一對一的時候,查詢主物件時預設不是懶載入。即:查詢主物件的時候也會把從物件查詢出來。

需要把主物件配製成

lazy="true"  constrained="true"  fetch="select"。此時查詢主物件的時候就不會查詢從物件,從而實現了懶載入。

一對一的時候,查詢從物件的是偶預設是懶載入。即:查詢從物件的時候不會把主物件查詢出來。

二、一對多的懶載入分析

一對多的時候,查詢主物件時預設是懶載入。即:

查詢主物件的時候不會把從物件查詢出來。

一對多的時候,查詢從物件時預設是懶載入。即:

查詢從物件的時候不會把主物件查詢出來。

需要配置主物件中的set集合 lazy="false" 這樣就配置成是不懶載入了。或者配置抓取方式fetch="join"也可以變成不懶載入。

三、多對一的懶載入分析

多對一的時候,查詢主物件時預設是懶載入。即:查詢主物件的時候不會把從物件查詢出來。

多對一的時候,查詢從物件時預設是懶載入。即:查詢從物件的時候不會把主物件查詢出來。

Hibernate中的懶載入原理分析

當使用session中的load方法查詢資料庫中的記錄時,我們返回的是乙個 物件,而不是真正需要的那個物件 例如資料庫中存有個student表,我們有cn.binyulan.doman.student的領域物件,如果查詢id值為 200626313 的studentstu student sessi...

Hibernate懶載入策略

hibernate懶載入策略 概念 lazy的概念就是只有在真正使用物件時,才會去建立。對hibernate而言,就是真正載入時才發出載入sql語句。延遲載入機制是為了避免一些無謂的效能開銷而提出來的。重點牢記 1.load支援延遲載入,get不支援延遲載入。2.lazy的生命週期與session相...

Hibernate懶載入策略

hibernate懶載入策略 概念 lazy的概念就是只有在真正使用物件時,才會去建立。對hibernate而言,就是真正載入時才發出載入sql語句。延遲載入機制是為了避免一些無謂的效能開銷而提出來的。重點牢記 1.load支援延遲載入,get不支援延遲載入。2.lazy的生命週期與session相...