Hibernate:使二级缓存无效

时间:2015-12-22 08:57:09

标签: java spring hibernate caching

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

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

  

如果某个用户或进程直接在数据库中进行更改,那么就在那里   绝不是第二级缓存更新自己直到   该缓存区域已经过了“timeToLiveSeconds”持续时间。在这   最好是让整个缓存无效并让hibernate运行   再次构建其缓存。您可以使用下面的代码段   使整个hibernate二级缓存无效。

1 个答案:

答案 0 :(得分:2)

如果您正在对Hibernate实体进行更改,那么您不必做任何其他事情来确保L2缓存的一致性,Hibernate会负责它。

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

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