用filter来实现
try{打开}finally{关闭}

解决方案 »

  1.   

    tiandiqing(天地情缘) 你好,你说用这一种方式的话我也想过.但我没觉得有什么好处.
    在你这里filter 用于截获什么东西.是所有涉及操作后台DAO的Servlet.还是 /* 所有的组建都截获.如果这样做的话我觉得和在一个Dao 的方法中得到新Session 方法操作完之后close好像没什么差别.因为其实在一个Servlet 中可能大部分只操作一个Dao的方法.那么你在访问这一个Servlet之前在Filter进行监听启动Session. Servlet操作完毕response 之前回到filter 进行关闭.这样的话不是没什么差别吗?
    我现在改进了一下利用的是HttpSessionListener.在HttpSession 新创建的时候得到一个新的Session,把他放进HttpSession 的属性中进行保存.在操作数据库的时候通过Servlet得到Session对Dao的方法进行参数的传递
    如  public void addStudent(Student stu,Session session) 这样来实现.
    最后在客户离开网站.在HttpSession destroy 的时候关闭Session.
    大家说这样做好吗?我觉得这样做可以最大限度的利用了Session 的缓存.
      

  2.   

    用filter可以实现将用户的一次请求中所有的持久化操作放在一个事务中处理
      

  3.   

    夏昕的HIBERNATE开发指南里有着方面的内容自己去看