Sung in Blog

                     一些技術文章 & 一些生活雜碎
          O/R mapping 集成

          當然你經常需要使用O/R mapping,而不是使用關系數據訪問。你總體的應用程序框架也必須支持它。因而提供了對Hibernate 2.x和JDO的集成支持。它的數據訪問架構使得它能和任何底層的數據訪問技術集成。Spring和Hibernate集成得尤其好。

          為什么你要使用Hibernate加Spring,而不是直接使用Hibernate?
           
          Session 管理 Spring提供有效率的,簡單的以并且是安全的處理Hibernate Session。使用Hibernate的相關代碼為了效率和恰當的事務處理一般需要使用相同的Hibernate “Session”對象。Spring讓它容易透明地創建和綁定Session到當前的線程,要么使用聲明式,AOP的method interceptor方法,要么在Java代碼層面使用顯式的,“template”包裝類。因而Spring解決了在Hibernate論壇上經常出現的用法問題。

          資源管理 Spring的應用程序context能夠處理Hiberante SessionFactories的位置和配置,JDBC數據源和其他相關資源。這使得這些值易于管理和改變。

          集成的事務管理 Spring讓你能夠把你的Hibernate代碼包裝起來,要么使用聲明式,AOP風格的method interceptor,要么在Java代碼層面顯式使用“template”包裝類。在兩種做法中,事務語義都為你處理了,并且在異常時也做好了恰當的事務處理(回滾,等)。如下面討論的,你還獲得了能夠使用和替換不同transaction manager,而不會讓你相關Hibernate代碼受到影響的能力。額外的,JDBC相關的代碼能夠完全事務性的和Hibernate代碼集成。這對于處理沒有在Hibernate實現的功能很有用。

          如上描述的異常包裝 Spring能夠包裝Hibernate異常,把它們從私有的,checked異常轉換為一套抽象的運行時異常。這使得你能夠僅僅在恰當的層面處理大部分不可恢復的持久化異常,而不影響樣板catch/throw,和異常聲明。你仍然能夠在任何你需要的地方捕捉和處理異常。記住JDBC異常(包括DB特有的方言)也被轉換到相同的層次中,意味著你能在一致的編程模型中對JDBC執行相同的操作。

          為了避免和廠商綁定 Hibernate是強大的,靈活的,開放源代碼并且免費,但是它仍然使用私有的API。給出了一些選擇,使用標準或者抽象API實現主要的程序功能通常是你想要的,當你需要因為功能,性能,或者其他考慮要轉換到使用其他實現時。

          讓測試變簡單 Spring的Inversion of Control方法使得改變Hibernate的session factories,數據源,transaction manager的實現和位置很容易,如果需要的話還能改變mapper object的實現。這使得更加容易分離和測試持久化相關的代碼。
          posted on 2005-10-26 15:55 Sung 閱讀(210) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 江永县| 定日县| 巴塘县| 常州市| 孝昌县| 建昌县| 三江| 白山市| 江孜县| 新绛县| 利川市| 炎陵县| 景宁| 霍林郭勒市| 深圳市| 桂东县| 东乡县| 松溪县| 延吉市| 沁水县| 文安县| 峨眉山市| 玛曲县| 云阳县| 梅州市| 兴安县| 东台市| 班戈县| 晋江市| 特克斯县| 牟定县| 太仓市| 临高县| 凤山市| 禹城市| 广南县| 太保市| 天祝| 玉树县| 平山县| 宁夏|