spring(三)-事务管理
1、 Spring事務管理
事務管理:本質是使用spring管理事務,完成數據庫對于事務的支持。
事務:一系列對數據庫操作的集合,一個操作錯誤,所有都必須回滾,其特點是acid。
(1)事務并發存在問題:
臟讀:事務讀取數據無效。事務T1將某一值修改,然后事務T2讀取該值,此后T1因為某種原因撤銷對該值的修改。
不可重復讀:一個事務范圍內兩個相同的查詢卻返回了不同數據。由于查詢時系統中其他事務修改的提交而引起的。側重對同一個數據的修改。
幻讀:多個事務操作統一數據集。同樣的條件, 由于事務T2的修改,第 1 次和第 2 次讀出來的記錄數不一樣。側重對數據集的增加和刪除。
丟失更新:事務T2操作覆蓋了事務T1的操作。
(2)spring事務管理方法
編程式事務管理(編程式事務管理使用TransactionTemplate或者直接使用底層的PlatformTransactionManager),可以做到代碼塊事務的細粒度。
聲明式事務管理:建立在AOP之上的,其本質是對方法前后進行攔截,然后在目標方法開始之前創建或者加入一個事務,在執行完目標方法之后根據執行情況提交或者回滾事務。就不需要在業務邏輯代碼中摻雜事務管理的代碼。
(包括兩種方法:基于tx和aop名字空間的xml配置文件/基于@Transactional注解,對dao層注釋)
| @Transactional (propagation=Propagation.NOT_SUPPORTED)? public class MyBatisServiceImpl implements MyBatisService { ???????? @Autowired ???????? private MyBatisDao dao; ???????? @Override ???????? public void insert(Test test) { ????????????????? dao.insert(test); 事物傳播行為是PROPAGATION_NOT_SUPPORTED,以非事務方式運行,不會存入數據庫 ????????????????? //拋出unchecked異常,觸發事物,回滾?? ????????????????? throw new RuntimeException("test"); ???????? } |
(3)事務隔離級別
若干個并發的事務之間的隔離程度。
(4)事務傳播行為
在開始當前事務之前,一個事務上下文已經存在,此時有若干選項可以指定一個事務性方法的執行。
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/xiongchang95/p/8966683.html
總結
以上是生活随笔為你收集整理的spring(三)-事务管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringCloud03 Ribbon
- 下一篇: 第二章知识梳理