Topic: [请重新关注]Hibernate数据更新不及时的问题?

  Print this page

1.[请重新关注]Hibernate数据更新不及时的问题? Copy to clipboard
Posted by: sc33
Posted on: 2006-07-30 15:36

我最近在使用hibernate的过程中,遇到一个困扰我已久的问题。

现象如下:当修改或者更新某一条数据后,再通过session去查询,有时会得到修改过的结果,有时候是修改前的结果。经查看,数据库已经更新。

求解:到底是什么问题引起的?

==================================
经过简单分析,我认为问题产生原因如下:
在HibernateSessionFactory中,我们通过一个本地线程来管理session,但每次我们得到的session并非是某个固定的,而是随机分配的。这样就会引发一个问题。当我们的sessionA通过update更新后,sessionB并不知道,所以不会与数据库同步,当我们再次去到的是sessionB的时间,cache中的数据仍然为老数据,所以就会发生有时数据变为新的,有时变为老的。

如果我的分析正确的话,求教各位,如何解决?


public class HibernateSessionFactory {
... ...
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();

    if (session == null || !session.isOpen()) {
      if (sessionFactory == null) {
        try {
          cfg.configure(CONFIG_FILE_LOCATION);
          sessionFactory = cfg.buildSessionFactory();
        } catch (Exception e) {
          System.err
              .println("%%%% Error Creating SessionFactory %%%%");
          e.printStackTrace();
        }
      }
      session = (sessionFactory != null) ? sessionFactory.openSession()
          : null;
      threadLocal.set(session);
    }

return session;
}
... ...
}

2.Re:不知道大家有没有遇到Hibernate数据更新不及时的问题? [Re: sc33] Copy to clipboard
Posted by: hayash
Posted on: 2006-08-01 10:29

修改前要启动一个事务,修改后要进行commit();


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923