操作数据库的类都是继承 HibernateDaoSupport 类 的 getHibernateTemplate 方法都是这样写的public boolean isInsertSmallLayout(SmallLayout sl) {

boolean b = true;
try {
this.getHibernateTemplate().save(sl);
} catch (Exception e) {
                        b = false;
e.printStackTrace();
}
return b;
}getHibernateTemplate 会自动关闭session 吗?
用netstat -an 查看连接状态 发现N多个访问数据库的连接没有断开
就证明访问数据库后 没有断开连接这是什么情况啊

解决方案 »

  1.   

    是的,映射到表加了lazy="false" 不加的话 有外键的表 执行操作会报错
      

  2.   

      楼主可以将lazy=false去掉,并且在web.xml中加上这段:
      <filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
      </filter>  <filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      <filter-mapping>
    这样就可将Session的生命周期扩展到View层,并且可以不用一次性把所有关联的数据都查出来,减少数据传输量,提高系统性能。
      

  3.   

    Open Session In View 是不是把MVC各层耦合的更紧密了呢?
      

  4.   

    那个lazy没必要在每个代码段里面写下吧映射文件里面写下就好了
      

  5.   

    就是在映射文件里(.hbm.xml)写的 
      

  6.   

    在session未关闭之前应该是持久状态
    当然没有断开喽
      

  7.   

    6楼说的对,在webxml文件中加个关闭session的过滤器即可,那样spring会自动的关闭session。
    <!-- 关闭session的过滤器 -->
    <filter>
    <filter-name>sessionClose</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter>
      

  8.   

    getHibernateTemplate 会自动关闭session 吗?  
    答案是不会,你使用完毕,必须自己手动关闭~~~