Session session = HibernateSessionFactory.getSession();    // Test 头字母要大写
    Query query = session.createQuery("from Test");    Iterator iterate = query.iterate();
    while (iterate.hasNext()) {
      Test test = (Test) iterate.next();
      test.print();
    }
    session.close();
谁能把原理给我解释一下呢....非常感谢,我就算会了但是原理也是没弄懂下次遇见也会忘记的.....

解决方案 »

  1.   

    不关闭的话,它就一直保持连接状态呀,就会影响性能啊,而且session会过时
      

  2.   

    这样会浪费资源的,打开一个session就会占有一些资源,不关闭不释放,你都没有什么别的用处了,为什么还要浪费呢。
      

  3.   

    session如果不关闭延迟加载还得可以查询,是这个好处吗
      

  4.   

    session是要要关闭的,如果想保持延迟加载应该采用openSession in view
      

  5.   

    因为一个数据库的连接可以被很多线程使用,hibernate会维护一个连接池,里面有有限的与数据库的连接(可配置数量的)(这种连接是长期保持的,避免平凡的创立连接进程,提高效率),一个session如果不关闭,会占用一个连接,别的线程就没办法使用,如果关闭了,这个连接又可以被连接池分配给其它线程了。所以session如果不关闭,对于效率来说后果很严重。
      

  6.   

    集成spring就可以不用手动关闭啊
      

  7.   

    需要关闭的,对于hibernate,可以在filter中来打开和关闭session,可以google下 one session per request模式。
      

  8.   

    不一定要关闭,不过N久不关闭,服务器应该会死。
    可以使用一个filter来关闭或者使用spring来管理