繁体   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