在hibernate的使用中,大家多數時間都在討論一級快取和二級快取,而往往忽略了查詢快取。其實hibernate的查詢快取在使用過程中也起著同樣重要的作用。hibernate的查詢快取是主要是針對普通屬性結果集的快取, 而對於實體物件的結果集只快取id。在一級快取,二級快取和查詢快取都開啟的情況下作查詢操作時這樣的:查詢普通屬性,會先到查詢快取中取,如果沒有,則查詢資料庫;查詢實體,會先到查詢快取中取id,如果有,則根據id到快取(一級/二級)中取實體,如果快取中取不到實體,再查詢資料庫。
和一級/二級快取不同,查詢快取的生命週期 ,是不確定的,當前關聯的表發生改變時,查詢快取的生命週期結束。
查詢快取的配置和使用也是很簡單的:
1>查詢快取的啟用不但要在配置檔案中進行配置
true
2>還要在程式中顯示的進行啟用
query.setcacheable(true);
1.實體類:
student.jsva
public
class student
2.對映檔案
student.hbm.xml
<
class
name
="com.sxt.hibernate.cache.entity.student"
table
="sxt_hibernate_student"
>
<
idname
="id"
length
="4"
>
<
generator
class
="native"
>
generator
>
id>
<
property
name
="name"
length
="10"
>
property
>
class
>
3.hibernate配置檔案:
4.測試方法:
public
static
void main(string args)
system.out.println("******************************==");
query = session.createquery("select s.name from student s");
//啟用查詢快取
query.setcacheable(true);
//沒有發出查詢語句,因為這裡使用的查詢快取
names = query.list();
for (iteratorit = names.iterator(); it.hasnext();)
t.commit();
} catch (exception e) finally
}*//* @suppresswarnings("unchecked")
public static void main(string args)
t.commit();
} catch (exception e) finally
system.out.println("******************************==");
try
t.commit();
} catch (exception e) finally
}*//* @suppresswarnings("unchecked")
public static void main(string args)
t.commit();
} catch (exception e) finally
system.out.println("******************************==");
try
t.commit();
} catch (exception e) finally
}*//* @suppresswarnings("unchecked")
public static void main(string args)
t.commit();
} catch (exception e) finally
system.out.println("******************************==");
try
t.commit();
} catch (exception e) finally
}*//* @suppresswarnings("unchecked")
public static void main(string args)
t.commit();
} catch (exception e) finally
system.out.println("******************************==");
try
t.commit();
} catch (exception e) finally
}*/@suppresswarnings("unchecked")
public
static
void main(string args)
t.commit();
} catch (exception e) finally
system.out.println("******************************==");
try
t.commit();
} catch (exception e) finally }
hibernate查詢快取
自 查詢快取的生命週期,當查詢關聯的表發生改變,那麼查詢快取的生命週期結束 delete update modify 啟用查詢快取 1.hibernate.cfg.xml中配置 true 2.中用setcacheable true 手動啟用 只對list 方法起作用 預設情況下list 每次都會發s...
Hibernate的查詢快取
在hibernate的使用中,大家都很熟悉一級快取和二級快取的使用,在hibernate中還有另一種快取,查詢快取。查詢快取是依賴於二級快取的。一.查詢快取的執行方式 hibernate的查詢快取是主要是針對普通屬性結果集的快取,而對於實體物件的結果集只快取id。在一級快取,二級快取和查詢快取都開啟...
hibernate的查詢快取
在hibernate的使用中,大家多數時間都在討論一級快取和二級快取,而往往忽略了查詢快取。其實hibernate的查詢快取在使用過程中也起著同樣重要的作用。hibernate的查詢快取是主要是針對普通屬性結果集的快取,而對於實體物件的結果集只快取id。在一級快取,二級快取和查詢快取都開啟的情況下作...