我已经读过,实体中的集合可以通过@Cache
注释或其在hibernate中的xml等价物在二级缓存中显式缓存。现在,如果我有一个很大的txn,其中一个@ManyToMany
类型的集合将被多次访问,是否可以指示hibernate将连接查询结果缓存在其第一级缓存中,以便每次都可以第一次访问该集合时,hibernate在其会话缓存中查找而不是触发查询?
FlushMode AUTO是否会影响一级缓存访问的效率?
答案 0 :(得分:0)
如果访问@ManyToMany
集合一次,结果将在会话期间保留在第一级缓存中。
如果在执行多个任务时保持相同的hibernate会话是不切实际的,那么@Cache
和二级缓存会更方便。
FlushMode.AUTO
意味着Hibernate将决定何时刷新会话,这意味着生成查询并将其发送到数据库(但尚未提交)。
这有效地使数据库与内存中的对象同步,以便进一步的查询已经看到到目前为止通过会话完成的修改。此功能对访问第一级缓存的效率没有任何直接影响。