为了账号安全,请及时绑定邮箱和手机立即绑定

hibernate的session怎样确保与数据库保持一致?

hibernate的session怎样确保与数据库保持一致?

人到中年有点甜 2019-03-13 18:14:47
hibernate里的session一级缓存,当一个用户通过get()load()等方法从数据库拿到某条数据,数据被缓存,此时第二个用户修改该条数据,数据库该数据被修改,此时第一个用户再get()该数据,从缓存中拿到数据,拿到的并不是实时的数据而是缓存的数据。这样想对不对?应该怎么解决?
查看完整描述

2 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

是这样的,所以一般session很短小,因为session关闭重开所有cache就都没了

在session内可以用evict()或clear()刷新缓存


查看完整回答
反对 回复 2019-04-23
?
潇湘沐

TA贡献1816条经验 获得超6个赞

怎样拿到最新的数据楼上都已经说了。我的建议是首先session对应一个数据库事务,事务的执行时间应该尽可能的短。第二,对于在session期间数据在其它地方发生改变,官方的解决方法应该是用锁机制,对于可容忍一定的事务失败回滚的情况可使用乐观锁,否则可考虑悲观锁,由楼主在实际应用中自己权衡使用哪一种方式。


查看完整回答
反对 回复 2019-04-23
  • 2 回答
  • 0 关注
  • 581 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号