是否可以在会话缓存中缓存集合?

时间:2014-03-16 15:16:53

标签: java hibernate caching

我已经读过,实体中的集合可以通过@Cache注释或其在hibernate中的xml等价物在二级缓存中显式缓存。现在,如果我有一个很大的txn,其中一个@ManyToMany类型的集合将被多次访问,是否可以指示hibernate将连接查询结果缓存在其第一级缓存中,以便每次都可以第一次访问该集合时,hibernate在其会话缓存中查找而不是触发查询?
FlushMode AUTO是否会影响一级缓存访问的效率?

1 个答案:

答案 0 :(得分:0)

如果访问@ManyToMany集合一次,结果将在会话期间保留在第一级缓存中。

如果在执行多个任务时保持相同的hibernate会话是不切实际的,那么@Cache和二级缓存会更方便。

FlushMode.AUTO意味着Hibernate将决定何时刷新会话,这意味着生成查询并将其发送到数据库(但尚未提交)。

这有效地使数据库与内存中的对象同步,以便进一步的查询已经看到到目前为止通过会话完成的修改。此功能对访问第一级缓存的效率没有任何直接影响。