宣告式事務 事務回滾的實現

2021-10-14 05:38:44 字數 1871 閱讀 1399

事務回滾:比如乙個部門裡面有很多成員,這兩者分別儲存在部門表和成員表裡面,在刪除某個部門的時候,假設我們預設刪除對應的成員。但是在執行的時候可能會出現這種情況,我們先刪除部門,再刪除成員,但是部門刪除成功了,刪除成員的時候出異常了。這時候我們希望如果成員刪除失敗了,之前刪除的部門也取消刪除。這種場景就可以使用@transactional事物回滾。

簡單概括為,如果乙個事務方法在執行時某乙個方法出現異常,那麼前所執行的所有該事務方法體內的方法都進行回滾,即失效、

實現事務回滾分三步:

第一步:

配置事務管理器來控制事務

注意:一定不要忘記將事務管理器加入進容器,且事務管理器必須管理資料來源

//事務管理器

@bean

public platformtransactionmanager transactionmanager()

throws propertyvetoexception

第二步:

使用**@transactional註解:給方法上標註@transactional表示當前方法是乙個事務方法;spring在執行這個方法的時候就會進行事務控制,如果這個方法正常進行,那麼所有的方法都提交,如果在執行過程**現異常,那麼所有的方法都回滾。**

@transactional

//表示當前是乙個事務方法

public

void

insertuser()

第三步:

使用@enabletransactionmanagement註解:開啟基於註解的事務管理功能;

示例:配置類:

@componentscan

("com.tx"

)@enabletransactionmanagement

//開啟基於註解的事務管理功能的註解

@configuration

//宣告這是乙個配置類

public

class

txconfig

//jdbctemplate可以簡化增刪改查的操作

@bean

public jdbctemplate jdbctemplate()

throws propertyvetoexception

//註冊事務管理器

@bean

public platformtransactionmanager transactionmanager()

throws propertyvetoexception

}

業務邏輯層(dao):

@repository

public

class

userdao

}

服務層(service):

@service

public

class

userservice

}

測試類:

public

class

test_tx

}

成功效果:

當我們把transactional註解關閉,測試失敗,效果如下:

剛剛開始學spring註解的知識,只是為了記錄。有不對的地方,歡迎指出!

Spring宣告式事務手動回滾方案

spring的事務一般分為宣告式事務 或叫註解式事務 和程式設計式事務,程式設計式事務比較靈活,可以將事務的粒度控制的更細,並且可以控制何時提交,哪種情況回滾。而宣告式事務使用 transactional註解,使用起來沒有那麼靈活,但是對業務 沒有入侵,而且本身支援一些異常情況下的回滾。但是這個異常...

MySQL事務和事務回滾

1 定義 一件事從開始發生到結束的整個過程 2 作用 確保資料一致性 3 事務和事務回滾應用 1 mysql中sql命令會自動commit到資料庫 show variables like autocommit 2 事務應用 1 開啟事務 mysql begin mysql 一條或多條sql語句 此時...

SQL Server 事務及回滾事務

第一種 declare ierrorcount intset ierrorcount 0 begin tran tran1 insert into t1 id,c1 values 1 1 set ierrorcount ierrorcount error insert into t1 id,c1 v...