spring声明事务与编程事务概述
生活随笔
收集整理的這篇文章主要介紹了
spring声明事务与编程事务概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
剛才扯了這么多AOP技術,為什么呢,就是為了引入到我們事務里面去的,首先在這里要說一下幾個點,在Spring的事務里面,記住一點,Spring的事務一般有幾種方式去實現呢,第一種事務叫編程事務,第二種事務叫聲明式事務,聲明式事務其實是編程式事務加反射進行包裝的,為什么這么說呢,我待會給你們細說,如果你們真想了解事務原理的話,把編程事務搞懂,為什么呢,因為編程事務相當于什么,你們開過車沒有,你們如果開過車的話會知道,車分為兩種類型的,一種叫做自動檔,還有一種叫手動擋,是不是這樣的,只要開過車的我們都知道,一般自動擋的你們不用去換擋,稍微比較簡單一點,手動擋的話就比較麻煩,那我們怎么辦呢,相當于我手動去begin,手動去commit,手動去提交,麻煩,你們就可以這樣理解,把編程事務叫做手動事務,聲明事務把它叫做自動事務,一般怎么來封裝呢,通過注解版本和掃包版本,xml配置的,你們為什么要先學編程式事務的呢,你們只要把編程式事務搞懂,你難道不懂聲明式事務嗎,我們講一下事務的基本特性,acid你們知道是干嘛用的嗎,我們后面講分布式事務做一個良好的基礎,事務特性ACID是干嘛用的,你們只要學過JAVA的都學過吧,像分布式事務它是屬于柔性事務,想我們使用的是剛性的,剛性事務是具備ACID原則的,首先第一點是原子性,原子性什么意思呢,這個是要么成功要么失敗,要么全部回滾,還有一個叫一致性,一致性什么意思呢,分布式事務的一致性因為一致性是什么呢,你整個數據里面要么回滾,比如說我舉個例子,比如A向B轉賬5000塊錢的時候,A和B轉賬之后也是5000,你們在今后也會學到,通訊的一致性問題,比如我A接口調用B接口,突然掛了的情況下,這個時候我的接口要做什么操作,最基本的要做重試機制,就是補發,就是為了保證雙方通信一致性的問題,是不是這樣的,這就是分布式事務的一個解決方案,還有隔離性,隔離性什么意思,事務隔離級別你們知不知道,事務的隔離級別,首先要記住一點,每個事務和事務之間是沒有關系的,我們在這里再說一下持久性,我的事務一旦提交到數據庫里面去的時候,它是永久持久化到你的硬盤里面去的,傳播行為有7種,隔離級別有4種,自己對分布式事務理解的非常的透徹的,為什么這么說呢,我不喜歡講源碼,希望寫框架,手寫分布式事務框架,知道我為什么要講手寫分布式事務框架,因為我覺得大家學任何知識,不要學框架API,那都不重要,而是學原理和思想,這是最主要的,千萬不要說我把代碼背下來,這是沒用的,記住,要的是思想,而不是說記API,這樣提高不了的,我們會講一下手寫分布式事務框架,事務的基本特性明白了
AOP編程應用場景
日志記錄,性能統計,安全控制,事務處理,異常處理
Spring事務使用
事務基本特性
⑴ 原子性(Atomicity)原子性是指事務包含的所有操作要么全部成功,要么全部失敗回滾,因此事務的操作如果成功就必須要完全應用到數據庫,
如果操作失敗則不能對數據庫有任何影響。
⑵ 一致性(Consistency)一致性是指事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態,也就是說一個事務執行之前和執行之后都必須處于
一致性狀態。拿轉賬來說,假設用戶A和用戶B兩者的錢加起來一共是5000,那么不管A和B之間如何轉賬,轉幾次賬,事務結束后兩個用戶的
錢相加起來應該還得是5000,這就是事務的一致性。⑶ 隔離性(Isolation)隔離性是當多個用戶并發訪問數據庫時,比如操作同一張表時,數據庫為每一個用戶開啟的事務,不能被其他事務的操作所干擾,
多個并發事務之間要相互隔離。即要達到這么一種效果:對于任意兩個并發的事務T1和T2,在事務T1看來,T2要么在T1開始之前就已經結束,要么在T1結束之后
才開始,這樣每個事務都感覺不到有其他事務在并發地執行。關于事務的隔離性數據庫提供了多種隔離級別,稍后會介紹到。
⑷ 持久性(Durability)
持久性是指一個事務一旦被提交了,那么對數據庫中的數據的改變就是永久性的,即便是在數據庫系統遇到故障的情況下也不會
丟失提交事務的操作。
例如我們在使用JDBC操作數據庫時,在提交事務方法后,提示用戶事務操作完成,當我們程序執行完成直到看到提示后,就可以
認定事務以及正確提交,即使這時候數據庫出現了問題,也必須要將我們的事務完全執行完成,否則就會造成我們看到提示事務
處理完畢,但是數據庫因為故障而沒有執行事務的重大錯誤。
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的spring声明事务与编程事务概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用springaop技术面向切面编程
- 下一篇: spring事务环境搭建