java - Hibernate二级缓存和RR事务隔离

标签 java hibernate second-level-cache transaction-isolation

如果两个事务(都在 RR 隔离级别)请求相同的二级缓存项目,然后它们修改并存储该项目。现在,为了读取该项目,他们没有运行任何 SQL,因为它已被缓存;那么在这种情况下,他们真的会开始数据库事务吗?当他们提交更改时,他们会遇到丢失更新的问题吗?

最佳答案

从悲观的角度来看:

如果二级缓存被配置为参与事务,那么只有第一个获得写锁的缓存才能修改缓存对象,然后将更改写入数据库。当第二个事务想要获取写锁时,它必须等到第一个事务结束并释放它。

使用乐观锁定,我猜应该会发生并发修改异常(或类似名称),并且第二个事务将重试该操作。

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

相关文章:

java - 如果我们在使用 Hibernate3 时同时拥有 hbm 和注释文件会怎样?

java - orm.xml中的Hibernate二级缓存?

java - 用于标量查询的 Hibernate 缓存

java - 尝试添加 Firebase UI 2.3.0 时,我不断收到 gradle 同步错误

java - 如何在 Android 上解析 GPS 导航消息

java - 显示打印机对话框

java - hibernate 和货币精度

java - 如何注释 map 以连接两个看似不相关的类?

hibernate - JBossCache 作为 JBoss 5 中 Hibernate 的二级缓存

java - 我正在为 ListView 使用简单适配器,但在 ListView 中滚动时开关会更改其状态?