【问题标题】:Hibernate : Invalidating Second Level cacheHibernate:使二级缓存无效
【发布时间】:2015-12-22 22:44:29
【问题描述】:

我了解到,如果持久存储中发生任何更新,L2 缓存将无法自行更新。那么,我应该在 DAO 层的每次写入或更新方法之后调用 evict2ndLevelCache() 方法吗?还是有更好的策略?

http://howtodoinjava.com/2013/07/02/how-hibernate-second-level-cache-works/

如果某些用户或进程直接在数据库中进行更改,则 二级缓存不可能自行更新,直到 该缓存区域的“timeToLiveSeconds”持续时间已过。在这个 在这种情况下,最好使整个缓存无效并让休眠 再次构建它的缓存。您可以使用以下代码 sn-p 来 使整个休眠二级缓存失效。

【问题讨论】:

标签: java spring hibernate caching


【解决方案1】:

如果您在 Hibernate 实体本身中进行更改,则无需执行任何其他操作来确保 L2 缓存的一致性,Hibernate 会处理它。

如果您通过本机查询进行更改,请明确提及受影响的实体,否则 Hibernate 将使整个二级缓存无效,如 here 所述。

如果您正在从另一个进程更改数据库中的数据,那么 Hibernate 不会意识到这一点,您必须定义最适合您的要求的策略(过期策略、从应用程序外部调用的显式失效、等)。

【讨论】:

    猜你喜欢
    • 2015-05-14
    • 2010-11-16
    • 2014-11-28
    • 2011-12-18
    • 2012-12-12
    • 2016-05-10
    • 2014-03-15
    • 2010-10-16
    • 2011-07-22
    相关资源
    最近更新 更多