hibernate缓存与数据库不一致问题综述与处理

全当备忘:

经过研究发现hibernate分布式二级缓存存在没有更新的情况,而一级缓存和数据库确实更新了,暂时现阶段处理方案如下:

1.事务中对象update后手动清除相关对象的二级缓存(现阶段修改,正常情况下update后hibernate会自动更新相关对象的二级缓存,目前并不确定是不是update后二级缓存没有更新,因此这里手动清除二级缓存以便和数据库同步)

2.后台增加清除指定表、行和集合对象的二级缓存的功能(减少直接使用sql语句更新导致数据库和缓存不同步的状况)

3.如果1和2处理后还出现问题,则进一步修改1,把1中对象update后手动清除二级缓存移到事务后执行,方法可使用threadlocal存储当前线程中有更新过的对象,并在action中处理这些对象进行二级缓存清除,从而保证二级缓存和数据库一直保持同步状态。

4.由于问题比较复杂,仅有非常低概率出现此问题,因此最终还是需要针对缓存的日志分析进而获得缓存变化来确认问题发生点。

5.如果业务复杂度以及分布式系统需求更新更加频繁,则需要考虑是否移除hibernate的二级缓存。替代方案可以控制自己业务层中做缓存,也可以使用数据库自带的缓存等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值