Spring對Hibernate的整合

  Spring管理Hibernate持久層有如下的優勢:

  1.基於依賴注入的SessionFactory管理機制,Spring容器(ApplicationContext)管理SessionFactory,使配置很容易被管理和修改,無須使用Hibernate配置文件,通過依賴注入,應用程序(測試)代碼無需關心SessionFactory(無須手動創建),創建和維護均由Spring容器負責;

  2.Spring提供有效簡單安全的Hibernate Session處理,Spring對Session的管理是透明的,無須在代碼中操作Session;

  3.統一的事務管理,Hibernate的事務管理會限制Hibernate的表現,Spring的聲明式事務管理粒度是方法級,無論是編程式事務,還是聲明式事務,Spring提供一致的編程模型,無須繁瑣的開始事務,顯式地提交,回滾;

  4.異常包裝:Spring能夠包裝Hibernate異常,把它們從持久層的checked異常(傳統的JDBC數據庫訪問異常都是checked異常,需要使用try..catch塊來處理)變爲業務層的runtime異常,不再強制開發者在持久層捕捉異常,持久層的異常被包裝成DataAccessException異常的子類,開發者自己決定在合適的層處理異常,將底層數據庫異常包裝成業務異常。

  5.HibernateTemplate:能夠完成大量的Hibernate持久層操作(增刪改查),讓測試程序繼承HibernateTemplate即可調用其中的方法。

 

  Spirng與Hibernate融合中,Spring通過ApplicationContext管理SessionFactory,無須採用hiberbate.hbm.xml配置文件,SessionFactory和數據庫的連接均由Spring配置管理,實際的J2EE應用中會使用數據源(DataSource),數據源採用依賴注入的方式傳遞給Hibernate的SessionFactroy

    SessionFactory有ApplicationContext管理,會隨着應用啓動時自動加載,Spring容器管理的任一個bean都可以引用SessionFactory對象,比如DAO,Hibernate的數據庫訪問需要在session的管理下,而SessionFactory是Session的工廠,Spring採用依賴注入爲DAO對象注入SessionFactory的引用,(通過構造注入或者設置注入)。

 

  1.Hibernate的持久層訪問步驟:

  (1)創建Configuration實例

  (2)創建SessionFactory實例

  (3)創建Session實例

  (4)打開事務

  (5)開始持久化訪問

  (6)提交事務

  (7)如果遇到異常,回滾事務

  (8)關閉Session

 

  2.使用HibernateTemplate

     HibernateTemplate提供持久層訪問模板化,使用HibernateTemplate無須實現特定接口,只需要一個SessionFactory的引用,SessionFactory對象(注意引用和對象的關係)通過構造注入或者設置注入的方式傳入。

     在Web應用中,通常啓動時自動加載ApplicationContext,SessionFactory和DAO對象都處在Spring容器的管理中,無須在代碼中顯示設置,可以通過配置文件設置SessionFactory和DAO的依賴關係。

  

  在Spring中使用Hibernate Synchronize,運用Hibernate框架

     1.創建映射文件,映射文件要放到一個包中(時刻注意Hibernate是以映射爲中心的工作流);

     2.右擊映射文件,選擇Hibernate Synchronizer->Synchronize File;

       這個操作的結果是生成一系列的Java類,即持久化對象的類,這些類完全符合JavaBean的格式,每一個數據屬性均有get和set方法,還會生成包名.base,包名.dao,包名.dao.iface一系列的包;

     3.撰寫DAOImpl實現生成的DAO接口文件,實現對數據庫的操作(包括增刪改查);

     4.在客戶端程序中需要聲明HibernateTemplate對象,以實現對數據庫的操作,實例化HibernateTemplate對象時需要提供J2EE應用程序的SessionFactory,通過依賴注入實現(Spring容器中的每一個Bean都可以引用該應用程序管理的SessionFactory)。

        HibernateTemplate類的常見方法

        delete      deleteAll      find    get    save     saveOrUpdate  update

     5.撰寫beans.xml

         配置文件需要定義Hibernate的配置,完成hibernate.hbm.xml的功能

         (1)定義數據源(通過bean定義),bean對應的類爲org.springframework.jdbc.datasource,需要指定數據庫及用戶名和密碼;

         (2)創建sessionFactory(通過bean定義),bean對應的類爲org.springframework.orm.hibernate3.LocalSessionFactoryBean,引用定義數據源的bean,並聲明使用的映射文件;

         (3)定義實現DAO接口的類的bean,bean對應的class爲該類的路徑。

    6.編寫客戶端測試程序,創建ApplicationContext實例,引用DAOImpl對象,調用定義的方法,實現對數據庫的持久化操作。

 

       注意,在Spring框架下利用Hibernate框架時,不需要指定hibernate.hbm.xml配置文件,因爲在bean.xml中已經對配置做了定義,由Spring容器管理SessionFactory。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章