ssh整合中,关闭session的任务由谁来做,如何做,请专家给个答案

来源:百度知道 编辑:UC知道 时间:2024/06/08 23:22:06
如题。

你如果用spring来管理hibernate,session的关闭是有string来管理的,不需要我们来处理,是系统自动的,如果你用hibernate的话,getSession().close();就可以的了

1.getSession()拿到的session是需要手动关闭的
getSession()这个方法本身其实返回的是与当前事务绑定的Session对象,在HibernateDaoSupport中使用, HibernateDaoSupport本身是不负责对这个Session对象进行关闭的,所以在其中有一个对应的releaseSession()方法,用于关闭Session。
2 使用了事务控制的情况下
但是一般使用Spring时,我们会采用HibernateTransactionManager进行事务管理,把事务配置在Service层。此时,它会帮助我们关闭与当前事务绑定的Session对象,只要参与了事务,HibernateTransactionManager会帮你正确关闭Session。
3使用了OpenSessionInView的情况下
不过很多的web应用都会采用OpenSessionInView模式,也就是Session会被保持到View层。同样经过 HibernateTransactionManager,为什么使用了OpenSessionInView模式以后,Session就不会被关闭呢?这是由于在获取当前线程绑定事务的时候,有一个判断,如果存在当前线程绑定的Session,会把当前事务对象的newSessionHolder值设置成 false,从而跳过上面的代码中doCleanupAfterCompletion(status.getTransaction());的调用

struts的ActionBean对session处理就可以,
request.getSession().invalidate();
OK