hibernate 获取session的方式记录

        用公司搭建的一个ssh 框架的时候,发现daoImpl 里面,组员都用不同的方式获取的session,大概了解了下情况,在这里记录一下。注意:版本是spring 2.5 和hibernate3 。spring 3.1 就没HibernateDaoSupport

         *DaoImpl  extends **,最后还是继承了 HibernateDaoSupport。

         用到的session 方式有:

         1. *.getSessionFactory.getCurrentSession() .

         2. *.getSessionFactory.openSession(); 

         3. *.getSession();

第一种: 会将session 与线程绑定,每次都从该线程去找,如果有,就拿过来用,没有就创建绑定。有几个                  线程实现的方法,去看源码就有了。该线程需要hibernate.current_session_context_class进行配                  置。这玩意儿,我们是让spring 进行管理,不用手动维护,比较方便,同一线程一直用一个线程,                节约资源

第二种:从新建立一个新的session,多次开启关闭,会耗内存资源,而且使用spring 管理的时候,                               没有进行绑定。如果同一线程需要不同session ,可以尝试使用

第三种:从线程池里面拿session,但如果线程池没有,或者超过了,也会从新创建,这时候的session,会让

                   你手动进行关闭,麻烦,也耗资源感觉还是第一种使用方便点。

猜你喜欢

转载自greemranqq.iteye.com/blog/1687562