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

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

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


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

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


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


Session接口中定义了一个refresh()方法,调用该方法,调用get()或load()方法之前,调用该方法可以拿到最新的数据;

【热门文章】
【热门文章】