【问题标题】:Is it possible to to cache collections in session cache?是否可以在会话缓存中缓存集合?
【发布时间】:2014-03-16 15:16:52
【问题描述】:

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

【问题讨论】:

    标签: java hibernate caching


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2016-07-13
      • 2010-11-23
      相关资源
      最近更新 更多