本帖最后由 wangyu1221 于 2011-06-14 21:46:36 编辑

解决方案 »

  1.   

    getSessionFactory()方法好像在HibernateTemplate的父类HibernateAccessor中~是调用hibernate本身的SessionFactory,是不是要手动关闭呢?
      

  2.   

    this.getHibernateTemplate().getSessionFactory().getCurrentSession();应该是不受spring事物管理器管理,并且一个线程创建一个session(有且只有一个),避免了手动设置事物管理,不过我认为还是用spring的事物管理器比较好,最好把事物控制在方法范围内
      

  3.   


    我觉得也是这么回事,可很多教程和例子似乎都说getCurrentSession()也是受事务管理的,只要sessionFactory是由spring注入的,那获取session的时候spring都会拦截并自动加入事务处理。
      

  4.   

    我觉得也是这么回事,可很多教程和例子似乎都说getCurrentSession()也是受事务管理的,只要sessionFactory是由spring注入的,那获取session的时候spring都会拦截并自动加入事务处理。?可能把,不过sessionFactory这时候应该是你自己创建的,而不是spring自带的,平常web开发SSH集成的时候都是用spring自带的sessionFactory的吧,不知道我说的对不
      

  5.   


    sessionFactory是spring创建的,配置如下
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
    </bean>
      

  6.   

    this.getHibernateTemplate().getSessionFactory().getCurrentSession()是不用手动关闭的,交给spring的事物去管理就好!
      

  7.   


    但是这个需要手动开始事务和提交/回滚。我已经配置了spring的事务管理,如果还需要手工控制事务那spring的事务管理就变得没有意义了。
      

  8.   

    .getCurrentSession()  在commit的时候就已经关闭了
    在session创建的时候,事物自动提交设置为false的。