java - Hibernate 缓存和数据库一致性

标签 java database hibernate caching orm

我有一个关于 Hibernate 缓存的问题。

据我了解,Hibernate 缓存用于避免频繁访问数据库。因此我们使用Hibernate缓存机制 获得性能。

如果数据库中增加了一条新记录,在使用缓存的时候,如果我们不去访问数据库,那么新增加的记录怎么获取呢?

缓存仍然获取旧记录,对吗?有人可以向我解释这是如何工作的吗?

最佳答案

每个缓存并发策略都有一个关联的cache synchronization mehcanism :

  1. NONSTRICT_READ_WRITE是一个通读缓存,因为实体在从数据库中获取时(而不是在持久化时)存储在缓存中。更新实体会导致实体缓存条目失效。

  2. READ_WRITE是一种异步直写缓存策略,因为数据库和缓存不是以事务方式更新的。软锁用于保证一致性。

  3. TRANSACTIONAL是一种同步缓存策略,因为数据库和缓存都是自动更新的。

Hibernate 支持强一致性,因此 READ_WRITE 和 TRANSACTIONAL 缓存一致性类似于 READ_COMMITTED isolation level .在 NONSTRICT_READ_WRITE 中,过时的记录仍然会发生。

关于java - Hibernate 缓存和数据库一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30979258/

相关文章:

database - 无法连接到 ubuntu 上的 postgres

mysql - 使用 hibernate 将枚举存储在数据库中

java - 当我在同一个 pom 文件中声明两个不同的版本时,哪个 Maven 依赖项占优势?

java - 测试时密码的 JSON 序列化

java - Cassandra nodetool抛出java异常

java - 忽略大写/小写字符串

hibernate - Grails 忽略 hibernate.cfg.xml

java - 如何在 Debug模式下启动 james 服务?

mysql - 数据库结构建议(序列化或分表)

Mysql,实现日期时间列