hibernate 查詢優化

2022-08-28 01:36:13 字數 1813 閱讀 9079

1. 延遲載入先獲取到**物件,當真正使用到該物件中的屬性的時候,才會傳送sql語句,是hibernate框架提公升效能的方式

2. 類級別的延遲載入

session物件的load方法預設就是延遲載入

customer c = session.load(customer.class, 1l);沒有傳送sql語句,當使用該物件的屬性時,才傳送sql語句

使類級別的延遲載入失效

在標籤上配置lazy=」false」

hibernate.initialize(object proxy);

3. 關聯級別的延遲載入(查詢某個客戶,當檢視該客戶下的所有聯絡人是是否是延遲載入)

預設是延遲載入

session session = hibernateutils.getcurrentsession();

transaction tr = session.begintransaction();

customer c = session.get(customer.class, 1l);

system.out.println("**********===");

system.out.println(c.getlinkmans().size());

tr.commit();

1. 查詢策略:使用hibernate查詢乙個物件的時候,查詢其關聯物件.應該如何查詢.是hibernate的一種優化手段!!!

2. hibernate框架的檢索策略解決的問題

查詢的時機

customer c1 = (customer) session.get(customer.class, 1);

system.out.println(c1.getlinkmans().size());

lazy屬性解決查詢的時機的問題,需要配置是否採用延遲載入!!

查詢的語句形式

listlist = session.createquery("from customer").list();

for(customer c : list)

fetch屬性就可以解決查詢語句的形式的問題!!

1. 在標籤上使用fetch和lazy屬性

fetch的取值-- 控制sql語句生成的格式

select-- 預設值.傳送查詢語句

join-- 連線查詢.傳送的是一條迫切左外連線!!!配置了join.lazy就失效了

subselect-- 子查詢.傳送一條子查詢查詢其關聯物件.(需要使用list()方法進行測試)

lazy的取值-- 查詢關聯物件的時候是否採用延遲!

true-- 預設.延遲

false-- 不延遲

extra-- 及其延遲

2. set標籤上的預設值是fetch="select"和lazy="true"

3. 總結:hibernate框架都採用了預設值,開發中基本上使用的都是預設值。特殊的情況。

1. 在標籤上使用fetch和lazy屬性

fetch的取值-- 控制sql的格式.

select-- 預設。傳送基本select語句查詢

join-- 傳送迫切左外連線查詢

lazy的取值-- 控制載入關聯物件是否採用延遲.

false-- 不採用延遲載入.

proxy-- 預設值.**.現在是否採用延遲.

由另一端的上的lazy確定.如果這端的class上的lazy=」true」.proxy的值就是true(延遲載入).

如果class上lazy=」false」.proxy的值就是false(不採用延遲.)

2. 在標籤上的預設值是fetch="select"和proxy

Hibernate框架 查詢優化

一 類級別查詢 get方法 沒有任何策略,呼叫即立即查詢資料庫載入資料。load方法 應用類級別的載入策略 lazy 預設值 true,查詢類時,會返回 物件,會在使用屬性時,根據關聯的session查詢資料庫,載入資料 lazy false.load方法會與get方法沒有任何區別,呼叫時即載入資料...

Hibernate的查詢優化策略

2.抓取策略 3.批量抓取 延遲載入 也稱為懶載入 是hibernate關聯關係物件預設的載入方式,延遲載入機制是為了避免一些無謂的效能開銷而提出來的,所謂延遲載入就是當在真正需要資料的時候,才真正執行資料載入操作。通常將延遲載入分為兩類 一類叫做類級別延遲,另一類叫做關聯級別的延遲。類級別的延遲指...

十一 Hibernate查詢優化之策略設定

使用hibernate查詢乙個物件的時候,查詢其關聯物件.應該如何查詢,可以通過配置對映檔案的屬性來設定。lazy屬性 解決查詢的時機的問題,是否延遲載入關聯資料,例如下面2條語句 customer c1 customer session.get customer.class,1 system.ou...