spring事物的提交與回滾

2021-07-13 05:09:49 字數 1591 閱讀 8196

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

//註解方式宣告事務,該事務宣告的範圍是service中的方法,而一般的事務宣告時不是宣告在//業務邏輯方法上的,而是宣告在單一的資料庫操作方法上的

@transactional

publicclassuserserviceimplimplementsuserservice,

newint);

thrownewexception("hello");

}

}

對於在類前用@transactional宣告的事務,則類中所有的方法都被宣告了事務,

@transactional宣告後預設情況下,所有方法如果丟擲的是unchecked異常,

也即runtimeexception,則事務回滾,如果丟擲的是checked異常,即exception,則事務不回滾

因此如果想讓方法在丟擲checked異常時也回滾,

則可以在方法前加上這樣的注釋

@transactional(rollbackfor=exception.class),這樣則表示該方法丟擲checked異常時也回滾,

當然也可以讓方法丟擲unchecked異常不進行回滾,

只需要在方法前面加上注釋

@transactional(norollbackfor=runtimeexception.class)即可

Spring事物手動回滾

手動回滾 方法1 在service層方法的catch語句中增加 transactionaspectsupport.currenttransactionstatus setrollbackonly 語句,手動回滾,這樣上層就無需去處理異常 現在專案的做法 方法2 例如service層處理事務,那麼se...

spring事物回滾無效

錯誤情況1.錯誤原因 spring沒有掃瞄相應的類,以前掃包都是在springmvc中直接這樣掃了,就能夠將testing下的controller和service那些都交給了spring,其實都是給了springmvc,根本沒有給spring,所以spring完全無法新增事物,解決方法 後台spri...

mysql 實現事務的提交與回滾

最近要對資料庫的資料進行乙個定時遷移,為了防止在執行過程sql語句因為某些原因報錯而導致資料轉移混亂,因此要對我們的指令碼加以事務進行控制。首先我們建一張tran test表 create table tran test f1 varchar 10 not null,f2 int 1 default...