和直接用Hibernate的api有什么区别,
而且你的DAO不能把一个连续的操作做为一个事务。

解决方案 »

  1.   

    不应该经常调用HibernateSessionFactory.closeSession();只应该在一系列请求完后才去关闭的可以使用Spring托管,或者自己写一个Filter去完成“每次Http请求一个会话”
      

  2.   

    不需要在DAO里CLOSE的。。把SESSION放在全局的静态变量中
      

  3.   

    怎么在每一个方法里面都要先调用HibernateSessionFactory.closeSession()这个方法,然后再关闭呢?在用完了之后再最后关闭不就可以了么?
      

  4.   

    如果你用了Struts,
    可以在用完之后关闭,
    也就是在action中:
    try{写业务逻辑}
    catch(){捕获异常}
    finally{关闭数据库连接}
      

  5.   

    我是初用Hibernate, 
    请问J2EEBird,用完后同意关闭Session的话,但是在用的过程中,比如,我在修改一条记录的时候,先调用findByID(),打开了一个Session,后再调用update()方法,同样又打开了一个Session,这样,在最后保存的时候,关闭的Session应该算哪个???
      

  6.   

    你的HibernateSessionFactory是自动生成的吧?那么里面应该有使用到ThreadLocal类去保存session,它可以保证你在调用HibernateSessionFactory.closeSession(); 前提下,每次的
    currentSession(); 返回同一个Session对象你只需要在最后一步时关闭closeSession(最简单的方法是写一个Filter或者spring托管之类的)
      

  7.   

    我用的是MyEclipse,自动生成的HibernateSessionFactory,我只是想每次直接调用DAO的方法,但是不太清楚在哪里管理Session.
    ChDw,你说的是在每个Action里,打开和关闭session吗???
      

  8.   

    我觉得可以再写一个service类,去调用DAO类,然后在service里面关闭,好像没有影响