使用hibernatecallback的原因

在Spring中有了HibernateDaoSupport爲什麼使用 HibernateCallback
使用 HibernateCallback 的理由 ,在項目開發中,使用了框架集成,Spring,Hibernate。。。
在開發中多處用到了Session,在對Session的使用維護上,有幾種看法。
1.getCurrentSession();
獲得當前會話中的session,該session有容器自行維護管理,Spring可以代理事務。
2.this.getSession();
從當前的執行中獲得或創建一個hibernate的session對象,自己關閉,釋放連接資源。
3.openSession();
調用函數自行創建一個數據庫的連接,並將其打開,在使用Spring操作非查詢語句的請況下,Spring的事務對該session對象不起到事務管理的作用,所以該session對象應當由程序員自己關閉,釋放連接資源。
在項目中使用到了Spring框架技術,就是說明,我們不想直接去獲取,打開Session,開始一個事務,處理異常,提交一個事務,最後關閉一個Session,使用Spring後,這樣的工作對我們來講太過於繁瑣,我們自己只專注於業務,不想去作這些重複而繁瑣的操作。我們把這些責任全部委託給了Spring的HibernateTemplate,然後使用聲明式的配置來實現這樣的功能。
如果我們通過類似getSession()這樣的方法獲得了Session,那就意味着我們放棄了上面所說的一切好處。
在Spring的框架中HibernateTemplate提供了相當多有用的輔助功能。我們想用它提供的輔助功能。但是HibernateTemplate包裝了Hibernate的代碼,使用了它以後不能直接訪問到Session了。
HibernateTemplate提供HibernateCallback,就是爲了滿足這種使用了HibernateTemplate的情況下,仍然需要直接訪問Session的需求而來的。它提供了在HibernateTemplate裏面直接訪問Session的能力,
程序員不必人爲的管理session對象, 這個就是使用HibernateCallback的原因。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章