Spring 對Hibernate 的簡化

2021-04-16 23:22:12 字數 1693 閱讀 2825

spring 對hibernate 的簡化

hibernate 的持久層訪問必須按如下步驟進行:

(1)建立configuration 例項。

(2) 建立sessionfactory 例項。

(3)建立session 例項。

(4) 開啟事務。

(5) 開始持久化訪問。

(6) 提交事務。

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

(8) 關閉session 。

雖然可以採用類似於hibernateutils 工具類封裝了部分過程,但依然不夠簡沽,需要通過**顯式地開啟ession ,開始事務,然後關閉事務,最後關閉session 。而spring提供更簡單的方式操作持久層,無須顯式地開啟session ,也無須在**中執行任何的事務操作語句。

spring 提供了hibernatetemplate ,用於持久層訪問,該模板類無須顯示開啟session及關閉session 。它只要獲得sessionfactory 的引用,將可以智慧型開啟session ,並在持久化訪問結束後關閉session ,程式開發只需完成持久層邏輯,通用的操作則由hibernatetemplate 完成。 

事務的處理,當然也可以採用程式設計式事務。spring 提供了程式設計式事務的支援。通常,推薦使用宣告式事務,使用宣告式事務有如下優點:

·**中無須實現任何事務邏輯,程式開發者可以更專注於業務邏輯的實現。

·宣告式事務不與任何事務策略藕合,採用宣告式事務可以方便地在全域性事務和區域性事務之間切換。

spring 的宣告式事務以spring 的aop 為基礎,開發者可以不需要對aop 深入了解,只需按本章後面部分配置宣告式事務**即可。

spring 對hibernate 的簡化,還得益於spring 異常處理策略。spring 認為:底層資料庫異常幾乎都不可恢復,強制處理底層資料庫幾乎沒有任何意義,但傳統jdbc 資料庫訪問的異常都是checked 異常,必須使用try... 、catch 塊處理。

另外, spring 包裝了hibernate 異常,並轉換到dataacces***ception 繼承樹內,所有dataacces***ception 全部是runtime 異常,但並不強制捕捉。歸納起來, spring 對hibernate 的簡化主要有如下幾個方面。

·基於依賴注入的sessionfactory 管理機制, sessionfactory 是執行持久化操作的核心元件。傳統hibernate 應用中, sessionfactory 必須手動建立,通過依賴注入,**無須關心sessionfactory ,而它的建立和維護由beanfactory 負責管理。

·更優秀的session 管理機制。spring 提供"每事務一次session" 的機制,該機制能大大提高了系統效能,而且spring 對session 的管理是透明的,無須在**中操作session 。

·統一的事務管理。無論是程式設計式事務,還是宣告式事務, spring 都提供一致的程式設計模型,無須煩瑣的開始事務、顯式提交及回滾。如果使用宣告式事務管理,可將事務管理邏輯與**分離,使事務可在全域性事務和區域性事務之間切換。

·統一的異常處理機制。不再強制開發者在持久層捕捉異常,通常持久層異常被包裝成dataacces***ception 異常的子類,將底層資料庫異常包裝成業務異常,開發者可以自己決定在合適的層處理異常。

• hibernatetemplate 支援類。hibernatetempate 能完成大量hibernate 持久層操作,這些操作大多只需要一些簡單的**即可實現。

Spring對JDBC及hibernate的支援

spring對jdbc及hibernate的支援 木馬網咖 一 作用 1.定義 spring的dao不是新發明一種技術,而是對原來技術的一種封裝,定義了一套 簡單實用的api 2.使用dao的好處 降低了業務邏輯層和具體的持久層技術 3.spring對dao的支援,定義了一套完善的異常類 1 執行時...

Spring 學習筆記整合 Hibernate

spring和hibernate處於不同的層次,spring關心的是業務邏輯之間的組合關係,spring提供了對他們的強大的管理能力,而hibernate完成了or的對映,使開發人員不用再去關心sql語句,直接與物件打交道。spring提供了對hibernate的sessionfactory的整合功...

Hibernate框架1 Hibernate入門

hibernate是目前最流行的orm框架。當我們採用orm框架之後,應用程式不再直接訪問底層資料庫,而是以物件導向的方式來操作持久化物件 例如建立 刪除等 而orm框架則將這些物件導向的操作轉化成底層的sql操作。orm用最直白的話來說就是 一大堆的類庫,我們用物件導向的方式來呼叫,它幫我們翻譯為...