spring会自动管理的。不用管理数据库的连接。

解决方案 »

  1.   

    spring中用getHibernateTemplate 是会自动管理session以及connection
    如果强制使用getSession()时spring是不管理session的。
    还是建议你检查下其他地方是否强制使用getSession()操作了,是否关闭了session.并且Spring的Session总是与某个线程绑定的,而这个线程往往就是承载Servlet或Jsp的那个线程,也就是说,它的生命周期scope是request的。
    看这个例子:
    public class DaoReal extends HibernateDaoSupport implements Dao {
      public List<User> getAll() {
        Session s = super.getSession();
        try {
          return s.createQuery("from User").list();
        } finally {
          s.close();
        }
      }
    }
    在上面的例子中,执行n遍后依然停止响应。
    说明:我们利用getSession强制获得了Hibernate的Session,这个Session可能是当前事务中之前使用过的,或者可能是一个新的,并不在当前事务中,Spring只对当前事务中的Session进行关闭。  要解决这个问题,方法有很多。可以使用我们之前讲到过的getHibernateTemplate().find()。也可以设定HibernateTemplate的AllowCreate为True,并在finally中关闭Session。也可以将true作为参数传递到super.getSession(..)方法中取得Session。这里的true表示允许创建。