java - Hibernate二级缓存

标签 java spring hibernate

场景:项目包含每周更新一次的引用数据。因此,不断从数据库中查询每笔交易的引用数据效率不高。因此缓存这些数据的动机。

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

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

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

最佳答案

不会的。

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

您可以清除缓存 - 请参阅此 code snippet

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

关于java - Hibernate二级缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078237/

相关文章:

java - '/left.do' 中的 ServletException : java. lang.ClassNotFoundException : org. apache.jsp.WEB_002dINF.tiles.leftlogged_jsp

java - 找不到符号、java、类加载器

java - Spring Security 与 google Oauth

java - Spring Boot 1.5.2 Controller 层测试

mysql - hibernate 不在 mysql 表上生成自动增量约束

java - IntelliJ Spring Gradle "Run all tests"不工作(单个测试运行良好)

java - 无法引用封闭范围中定义的非最终局部变量按钮,随机方法错误

java - 如何使用hibernate在spring中获取实体类中的inet

java - 无法将我的Spring Boot API连接到MYSQL数据库

java - JSP中的空指针异常