场景:项目包含每周更新一次的参考数据。因此,不断地从数据库查询每个事务的参考数据是不高效的。因此缓存这些数据的动机。
问题:如果Hibernate中的二级缓存和查询缓存被激活,并且hibernate配置中的缓存元素被设置为只读,那么如果更改,hibernate将如何知道何时更新缓存通过另一个程序进入数据库。这是由Hibernate自动处理还是我们必须使用某个触发器清除缓存? 如果这是由Hibernate处理的话,有人可以说明如何处理它吗?
JBoss文档对缓存的管理不是很清楚。
我目前正在使用Spring 3.1的Hibernate 3.6,如果没有必要,我不希望升级到Hibernate 4。
答案 0 :(得分:1)
它不会。
二级缓存需要通过ORM框架对数据进行所有访问,因此如果db中有另一个actor,则缓存将变为陈旧。
您可以清除缓存 - 请参阅此内容 code snippet
因此,当数据库更新时,您可以公开允许第三方清除应用程序缓存的服务。