hibernate 每个线程都有自己的session, session里面都有自己的一级缓存,而且不能取消。
这样的话,如果多线程对同一张表做操作。 会出现数据不一致的情况。。
比如 一个线程update了一条数据。另一个线程缓存的数据就不是最新数据。如果用load get之类的 方法 就会得到
非最新数据。造成数据混乱。
hibernate是不是不能提供这方面的保证。只有程序控制吗?
大家碰到过这样的问题吗。一般都如何考虑的?
hibernate 每个线程都有自己的session, session里面都有自己的一级缓存,而且不能取消。
这样的话,如果多线程对同一张表做操作。 会出现数据不一致的情况。。
比如 一个线程update了一条数据。另一个线程缓存的数据就不是最新数据。如果用load get之类的 方法 就会得到
非最新数据。造成数据混乱。
hibernate是不是不能提供这方面的保证。只有程序控制吗?
大家碰到过这样的问题吗。一般都如何考虑的?
在查询前,手动关闭session,然后在getSession.createQuery(),这样去查询的话session的缓存就被清空了。