1

场景:项目包含每周更新一次的参考数据。因此,不断地从数据库中查询每个事务的参考数据是不高效的。因此有缓存这些数据的动机。

问题:如果 Hibernate 中的二级缓存和查询缓存被激活,并且 hibernate 配置中的缓存元素设置为只读,那么如果通过另一个程序对数据库进行更改,hibernate 将如何知道何时更新缓存。这是由 Hibernate 自动处理的还是我们必须使用一些触发器来清除缓存?如果这是由 Hibernate 处理的,有人可以阐明这是如何处理的吗?

JBoss 文档对缓存的管理不是很清楚。

我目前正在使用带有 Spring 3.1 的 Hibernate 3.6,如果没有必要,我不希望升级到 Hibernate 4。

4

1 回答 1

1

它不会。

二级缓存期望对数据的所有访问都通过 ORM 框架发生,因此如果您在数据库中有另一个参与者,您的缓存将变得陈旧。

您可以清除缓存 - 请参阅此 代码片段

因此,您可以公开一项服务,该服务允许第 3 方在数据库更新时清除您的应用程序上的缓存。

于 2013-06-13T03:31:03.673 回答