偶尔会出现一些问题,比如执行find却出现update,是不是Session共享错乱了?

解决方案 »

  1.   

    多线程的时候就会出现SESSION 混乱的情况,放弃共享吧.
      

  2.   

    但是这个模式是hibernate官方推荐的方式啊,他们推荐将Session放在ThreadLocal中实现Thread级别的Session共享
      

  3.   

    暂时没看出来什么问题,但觉的销毁session不够彻底
    sessionLocal.set(null)
      

  4.   

    同时这里,试一下,感觉是某些地方未同步的问题,个人愚见,不对勿怪:
      protected Session getSession() throws HibernateException {
        synchronized(sessionFactory)
            {
             Session s = (Session)sessionLocal.get();
         if(s == null){
        
                      s = getSessionFactory().openSession();
         sessionLocal.set(s);
         return (Session)sessionLocal.get();
         }else{
         return s;
         }
            }
        }
      

  5.   

    还是不行,好像Session偶尔会出现错乱
      

  6.   

    hibernate文档里有一个 HibernateUtil 类, 直接用吧, 不用自己写
      

  7.   

    我就是仿造HibernateUtil写的,结构是一样的,他好像推荐在filter中打开关闭Session,但说的也不是很详细
      

  8.   

    ThreadLocal共享session,在web层用filter控制session的关闭
      

  9.   

    在web层控制session,不太好吧
    应该让事务来控制session的吧
      

  10.   

    hibernate新版本的HibernateUtils已经不这么写了, 
    你看看是不是用新版本?