對事務的理解:事務是指修改資料庫資料時,需要滿足所有的操作要滿足一致性,要麼全都操作,要麼全都不操作。例如,當我買乙個商品時,大致的步驟如下:
1.資料庫中商品的數量減一
2.我的賬戶餘額減去商品的**
當執行到第二步時,若發現我的餘額不夠支付該商品,本次購買便失敗,系統應該恢復原來的商品數量(即需要回滾),這便是乙個典型的事務,庫存減一和賬戶消費必須一致,要麼一起執行成功,要麼都不執行。
事務的配置:
xml配置
spring支援的事務傳播行為(xml配置中method的propagation屬性便是):
1.requred:如果有事務在執行,當前的方法就在這個事務內執行,否則就啟動乙個新的事務,並在自己的內部執行、
2.requres_new:當前的方法必須啟動新事物,並在他自己的事務內部執行,如果有事務在執行,應該將它掛起
3.supports:如果有事務在執行,當前的方法就在這個事務內執行,否則它可以不執行在事務中
4.not_supporte:當前的方法不應該執行在事務中,如果有執行的事務,應將它掛起
5.mandatory:當前的方法必須執行在事務內部,如果沒有正在執行的事務,就丟擲異常
6.never:當前的方法不應該執行在事務中,如果有執行的事務,就丟擲異常
7.nested:如果有事務執行,當前的方法就應該在這個事務的巢狀事務內部執行,否則就啟動乙個新的事務,並將他在自己的的事務內執行
readonly:該屬性表示指定的事務為唯讀,表示這個事務唯讀資料但是不更新資料,這樣可以幫助資料庫引擎優化事務。若乙個方法只讀取資料,建議設定唯讀屬性。我的配置中,將所有的以find,select,query,get開頭的查詢方法都設定為了唯讀,這將大大提高查詢效率。
事務回滾:spring宣告式事務預設情況下對所有的執行時異常進行回滾,也可以配置norollbackfor="異常名",遇到此異常將不回滾。通常情況下,不會配置這個屬性。
spring學習筆記 4
spring對aop的支援 1 如果目標物件實現了介面,預設情況下會採用jdk的動態 實現aop 2 如果目標物件實現了介面,可以強制使用cglib實現aop 3 如果目標物件沒有實現了介面,必須採用cglib庫,spring會自動在jdk動態 和cglib之間轉換 如何強制使用cglib實現aop...
spring學習筆記
spring中兩個十分重要的概念 ioc di aop 1.ioc di inverse of control dependence injection ioc 控制反轉,看起來比較牛b,說起來十分簡單。就是不使用傳統的將類的依賴關係用硬編碼來維護的方式,而是讓容器來管理類之間的依賴,依賴關係在全在...
Spring 學習筆記
實現ioc的兩種方式 dependency injection 和 service locator 關於依賴注入 依賴注入指的是,當您在a物件內部需要b物件的某個功能時,a就依賴於b,您可以直接在a內部例項化b,但日後要修改就麻煩些。如果您不直接在a內部例項化b,而是通過ioc將乙個b例項從外部設定...