读书人

主要讨论Spring与Hibernate集成中的se

发布时间: 2012-06-27 14:20:09 作者: rapoo

主要讨论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

读书人网 >软件架构设计

热点推荐