Spring核心技術之事物

2021-10-08 18:24:20 字數 1555 閱讀 1934

事物的概述

1.原子性:原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。

2.一致性:一致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何轉賬,轉幾次賬,事務結束後兩個使用者的錢相加起來應該還得是5000,這就是事務的一致性。

3.隔離性:隔離性是當多個使用者併發訪問資料庫時,比如操作同一張表時,資料庫為每乙個使用者開啟的事務,不能被其他事務的操作所干擾,多個併發事務之間要相互隔離。即要達到這麼一種效果:對於任意兩個併發的事務t1和t2,在事務t1看來,t2要麼在t1開始之前就已經結束,要麼在t1結束之後才開始,這樣每個事務都感覺不到有其他事務在併發地執行

4.永續性:永續性是指乙個事務一旦被提交了,那麼對資料庫中的資料的改變就是永久性的,即便是在資料庫系統遇到故障的情況下也不會丟失提交事務的操作。例如我們在使用jdbc運算元據庫時,在提交事務方法後,提示使用者事務操作完成,當我們程式執行完成直到看到提示後,就可以認定事務以及正確提交,即使這時候資料庫出現了問題,也必須要將我們的事務完全執行完成,否則就會造成我們看到提示事務處理完畢,但是資料庫因為故障而沒有執行事務的重大錯誤。

事務的分類

1.程式設計式事務:

1).人為獲取當前專案中的事務管理器(datasourcetransactionmanager)

2).採用事物管理器實現提交/回滾事物操作

2.宣告式事務:

只需要在類上/方法上加上乙個註解@transaction

注意:@transaction失效問題:不要try業務邏輯。如果try的情況下,則aop不會捕獲該異常,所以就不會回滾,非要try的話,一定要在catch裡面手動回滾(transactionaspectsupport.currenttransactionstatus().setrollbackonly();)

宣告事物的底層實際上是基於傳統的程式設計事物實現封裝

事物的7種傳播行為

1.propagation_required 支援當前事務,假設當前沒有事務。就新建乙個事務

2.propagation_supports 支援當前事務,假設當前沒有事務,就以非事務方式執行

3.propagation_mandatory 支援當前事務,假設當前沒有事務,就丟擲異常

4.propagation_requires_new 新建事務,假設當前存在事務。把當前事務掛起

5.propagation_not_supported 以非事務方式執行操作。假設當前存在事務,就把當前事務掛起

6.propagation_never 以非事務方式執行,假設當前存在事務,則丟擲異常

7.propagation_nested 如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作。

事物的作用:保證我們資料一致性原則,遵循acid原則

Spring核心技術 IOC,DI

ioc 控制反轉 英文全稱 inversion of control di 依賴注入 英文全稱 dependency injection ioc和di其實是講的乙個東西 封裝對物件的例項化 原先 對於物件的建立,通過new進行例項化 等同於自己找媳婦 在程式中被稱為依賴 而現在 統一通過 父母 be...

Spring框架核心技術總結

方便解耦,簡化開發 通過spring提供的 ioc容器,可以將物件間的依賴關係交由 spring 進行控制,避免硬編碼所造成的過度程式耦合。使用者也不必再為單例模式類 屬性檔案解析等這些很底層的需求編寫 可以更專注於上層的應用。依賴注入的概念 它是spring 框架核心 ioc的具體實現方式。簡單的...

Spring之事物傳播原理

spring事物原理,使用aop動態 機制實現事物。required 預設 支援使用當前事務,如果當前事務不存在,建立乙個新事務。supports 支援使用當前事務,如果當前事務不存在,則不使用事務。mandatory 強制事物,支援使用當前事務,如果當前事務不存在,則丟擲exception。req...