Session session = this.getHibernateTemplate().getSessionFactory().openSession();这样创建的session执行完后 spring会自动关闭吗?

解决方案 »

  1.   

    会自动关闭的,如果不存在事务,每次执行HibernateTemplate方法都会取得新Session,执行完数据库操作后再关闭Session
      

  2.   

    最好不要这样用,你可以用回调的方法。
    这样获取出来,你的session是需要你自己去关闭的。
      

  3.   

    如果没有使用OpenSessionInViewFilter,在事务结束的时候会关闭。
      

  4.   

    你是通过sessionFactory新建的,spring不会关闭,你网页多刷几次看死不。
      

  5.   

    对啊,session就要手动关的,这样岂不是返回到最初那种思想啦?
    干脆不用spring啦
      

  6.   

    单独openSession应该要手动关闭。参考下这个:
    --------------------------------------------
    this.getsession实际上是调用了父类中的方法获得session。使用spring管理hibernate的SessionFactory的时候,这个方法会从session池中拿出一session.这样做有可能有问题,就是超session池连接数的时候,spring无法自动的关闭session。  不推荐使用this.getHibernateTemplate().getSessionFactory().getCurrentSession()从spring管理的sessionFactory中创建一个绑定线程的session.spring会根据该线程的执行情况来自动判断是关闭session还是延迟关闭。这样做可以避免手动的管理实务,同时一个线程最多开启和关闭一次session又可以提高程序的性能。 极力推荐使用这种方法 
    this.getHibernateTemplate().getSessionFactory().OpenSession。这种方法从spring管理的sessionFactory中创建一个session,此session不是线程绑定的。当执行完一个实务的时候自动关闭session.这种方法不用手动管理实务,但是同一个线程多次的开启和关闭session,浪费系统资源和影响执行效率,正常情况下还是不要用了。
      

  7.   


    这个想法正确的,最好不要自己打开session