我在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 ] ] |
*----------------------------------------------------------------------------------------*
查询和作为该查询的参数提供的值的组合用作键,值为该查询的标识符列表。 < / p>
问题1 :此处有哪些标识符?它们是查询结果中的实体ID吗?
问题2: Hibernate的文档说
例如,如果您针对对象缓存查询结果, Hibernate需要跟踪是否有任何更改 针对该对象提交,并相应地使缓存无效
如果问题1的答案为YES(它们是查询结果中的实体ID),这是否表示上次更新表时缓存的保留时间戳,并决定在需要时刷新缓存?
答案 0 :(得分:0)