java - hibernate的session怎样确保与数据库保持一致?
PHPz
PHPz 2017-04-18 09:48:21
0
3
403

hibernate里的session一级缓存,当一个用户通过get()load()等方法从数据库拿到某条数据,数据被缓存,此时第二个用户修改该条数据,数据库该数据被修改,此时第一个用户再get()该数据,从缓存中拿到数据,拿到的并不是实时的数据而是缓存的数据。这样想对不对?应该怎么解决?

PHPz
PHPz

学习是最好的投资!

全部回覆(3)
伊谢尔伦

是這樣的,所以一般session很短小,因為session關閉重開所有cache就都沒了

在session內可以用evict()或clear()刷新快取

Peter_Zhu

Session介面中定義了一個refresh()方法,呼叫該方法,在呼叫get()或load()方法之前,呼叫該方法可以拿到最新的資料;

阿神

怎麼拿到最新的數據樓上都已經說了。我的建議是首先session對應一個資料庫事務,事務的執行時間應該盡可能的短。第二,對於在session期間資料在其它地方發生改變,官方的解決方法應該是用鎖機制,對於可容忍一定的事務失敗回滾的情況可使用樂觀鎖,否則可考慮悲觀鎖,由樓主在實際應用中自己權衡使用哪一種方式。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板