getCurrentSession将当前session绑定到一个线程中去,当事物提交或者是回滚事物的开启和关闭都是通过spring来做的)之后,session会自动关闭.
openSession如果也是交给spring来管理的话,事物的开启和提交或回滚的话,spring都可以管理,但是关闭sessoin的话就需要手动来关闭
注意:假设你的用用中是通过spring来管理hibernate中的session的话,如果没有采用OpenSessionInViewFilter或者是OpenSessionInViewInterceptor的话,session会在事物提交或或者回滚的时候关闭.
OpenSessionInViewFilter是一个Servlet2.3过滤器,用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定,目的是为了实现"Open Session In View"的模式
它允许事物提交之后延迟加载显示所需要的对象,这个过滤器和HibernateInterceptor有点类似:它是通过线程实现的。无论是没有食物的应用还是业务层
事物的应用(通过HibernateTransactroniManager或者JtaTransactionManager的方式实现)它都适用,在后一种情况下,事物会自动采用有这个filter绑定的Session
来进行相关的操作以及根据实际情况完成提交操作