簡體   English   中英

解釋Hibernate查詢緩存

[英]explain Hibernate query cache

我閱讀了http://www.javalobby.org/java/forums/t48846.html中的文章,該文章解釋了Hibernate Query Cache,但我無法完全理解它的工作原理。

如文章所述:

Query query = session.createQuery("from Person as p where p.parent.id=? and p.firstName=?");
query.setInt(0, Integer.valueOf(1));
query.setString(1, "Joey");
query.setCacheable(true);
List l = query.list();

查詢緩存的工作原理如下:

*----------------------------------------------------------------------------------------*
|                                    Query Cache                                         |
|----------------------------------------------------------------------------------------|
| ["from Person as p where p.parent.id=? and p.firstName=?", [ 1 , "Joey"] ] -> [  2 ] ] |
*----------------------------------------------------------------------------------------*

查詢和作為該查詢的參數提供的值的組合用作鍵,該值是該查詢的標識符列表。

問題1 :這是什么標識符 它們是查詢結果中實體的ID嗎?

問題2: Hibernate的文件說

例如,如果您緩存針對對象的查詢結果,則Hibernate需要跟蹤是否已對該對象進行任何更改,並相應地使緩存無效

如果問題1的答案為是(它們是查詢結果中實體的ID),這是否意味着上次更新表時緩存的保留時間戳,並在需要時決定刷新緩存?

  1. 是。
  2. 緩存跟蹤給定緩存條目所依賴的表。 當這些表中的任何一個更新時(任何一行或多行,無論它們是否影響特定的緩存結果),緩存條目都將失效。 這意味着下次查詢+參數再次發生時,它將導致數據庫查詢,而不是從查詢緩存中提取結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM