1、事務認識
大家所了解的事務transaction,它是一些列嚴密操作動作,要麼都操作完成,要麼都回滾撤銷。spring事務管理基於底層資料庫本身的事務處理機制。資料庫事務的基礎,是掌握spring事務管理的基礎。這篇總結下spring事務。
事務具備acid四種特性,acid是atomic(原子性)、consistency(一致性)、isolation(隔離性)和durability(永續性)的英文縮寫。
(1)原子性(atomicity)
事務最基本的操作單元,要麼全部成功,要麼全部失敗,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
(2)一致性(consistency)
事務的一致性指的是在乙個事務執行之前和執行之後資料庫都必須處於一致性狀態。如果事務成功地完成,那麼系統中所有變化將正確地應用,系統處於有效狀態。如果在事務**現錯誤,那麼系統中的所有變化將自動地回滾,系統返回到原始狀態。
(3)隔離性(isolation)
指的是在併發環境中,當不同的事務同時操縱相同的資料時,每個事務都有各自的完整資料空間。由併發事務所做的修改必須與任何其他併發事務所做的修改隔離。事務檢視資料更新時,資料所處的狀態要麼是另一事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會檢視到中間狀態的資料。
(4)永續性(durability)
指的是只要事務成功結束,它對資料庫所做的更新就必須永久儲存下來。即使發生系統崩潰,重新啟動資料庫系統後,資料庫還能恢復到事務成功結束時的狀態。
2.xml配置基於aspectj aop事務
<
!--配置連線池-->
"datasource" class=
"org.springframework.jdbc.datasource.drivermanagerdatasource"
>
"driverclassname" value=
"com.mysql.jdbc.driver"
>
"url" value=
"jdbc:mysql:///test?characterencoding=utf-8"
>
"username" value=
"root"
>
"password" value=
"123456"
>
<
!--配置事務-->
"transactionmanager" class=
"org.springframework.jdbc.datasource.datasourcetransactionmanager"
>
"datasource" ref=
"datasource"
>
"txadvice" transaction-manager=
"transactionmanager"
>
<
!--proxy-target-class屬性值決定是基於介面的還是基於類的**被建立。首先說明下proxy-target-class=
"true"和proxy-target-class=
"false"的區別,為true則是基於類的**將起作用(需要cglib庫),為false或者省略這個屬性,則標準的jdk 基於介面的**將起作用。-->
"true"
>
<
!--配置切入點-->
"pt" expression=
"execution(* cn.msg.service.impl.*.*(..))"
>
<
!--繫結事務-->
"txadvice" pointcut-ref=
"pt"
>
http proxy配置那些事
atom編輯器 node.js npm的配置檔案有多個地方,最通用的全域性配置檔案在c盤下的user根目錄裡面 c users xx xx是你當前的登入使用者,在此目錄下配置乙個 npmrc 檔案即可如圖 其中內容 公司 需要驗證的時候user password是域賬號密碼。配置完以後可以使用 np...
使用XML Schema配置spring事務管理
spring支援程式設計式事務策略和宣告式事務策略,但是通常都推薦使用宣告式事務策略 使用宣告式事務策略的優勢很明顯 1 宣告式事務能大大降低開發者的 書寫量,無論底層事務策略如何變化,應用程式都無需改變2 spring宣告式事務管理無需容器的支援,可以在任何環境下使用3 通過配置檔案,spring...
基於xml配置Spring
之前用的是springboot,沒接觸過spring的xml配置,最近專案轉到普通spring,順便學習了一下基於xml的配置。首先是命名空間的定義 處為預設命名空間,它沒有空間名,用於springbean的定義 處xsi標準命名空間,用於為每個文件中的命名空間指定相應的schema樣式檔案,是w3...