首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

主要讨论Spring与Hibernate集成中的session有关问题

2012-06-27 
主要讨论Spring与Hibernate集成中的session问题转自http://www.iteye.com/topic/7339711.通过getSession()

主要讨论Spring与Hibernate集成中的session问题

转自http://www.iteye.com/topic/733971

1.通过getSession()方法获得session进行操作

                                <filter>???????<filter-name>hibernateFilter</filter-name>??????<filter-class>???org.springframework.orm.hibernate3.support.OpenSessionInViewFilter?????</filter-class>????</filter>??



                              总结:
                              (1)对于getSession(),getSession(false),getCurrentSession()以及getHibernateTemplate()方法而言,如果对其所在方法进行事务控制,那么可以确保在整个方法中只存在一个session,无论你执行了几次CRUD操作,并且所打开的session会在事务结束时自动关闭。
                              (2)必须对getSession(false)以及getCurrentSession()所在的方法进行事务控制(原因见上述分析)
                              (3)如果没有对getSession()以及getHibernateTemplate()所在方法进行事务控制,那么如果在方法中进行N次CRUD操作,就会打开N个session,即每次调用getSession()和getHibernateTemplate()方法都会打开新的session。这两个方法的区别在于:getHibernateTemplate()方法结束时会自动关闭连接,而getSession()方法必须手动关闭。
                              (4)如果在方法中采用SessionFactory的openSession()方法获得连接进行操作,那么无法对其进行事务控制。
                              (5)一般的开发中,通常采用getHibernateTemplate()方法进行数据库操作, getHibernateTemplate()方法采用模板+回调的机制,进行数据库操作很方便,可以查看(其中session的打开与关闭都是在doExecute方法中进行的):

                              ?

                              http://lijiejava.iteye.com/blog/667644
                              http://lijiejava.iteye.com/blog/727249

热点排行