日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

spring管理事務(wù)@Transactional注解相關(guān)參數(shù)

作者:仰望星空的快樂 更新時間: 2022-05-10 編程語言

1.propagation事務(wù)的傳播行為

看完就明白_spring事務(wù)的7種傳播行為_gnixlee的博客-CSDN博客_事務(wù)傳播行為

requird

方法A調(diào)用方法B,A中有事務(wù),不管B中有沒有事務(wù),B都被放入A中的事務(wù)執(zhí)行

A中沒有事務(wù),B就創(chuàng)建一個新事務(wù),和A一起在新事物執(zhí)行

requird-new

它會開啟一個新的事務(wù)。如果一個事務(wù)已經(jīng)存在,則先將這個存在的事務(wù)掛起。

2.isolation 事務(wù)的隔離級別

為了解決以下三個問題

1>臟讀
? ??一個未提交的事務(wù)讀到了一個未提交事務(wù)的數(shù)據(jù)

例子:事務(wù)a和事務(wù)b都要對一行中的同一個sal進(jìn)行修改值是5000,事務(wù)a要在原來基礎(chǔ)上加200,事務(wù)b要減200.事務(wù)a先加兩百但沒提交,事務(wù)b才讀數(shù)據(jù),事務(wù)b讀到的就是事務(wù)a加兩百之后的數(shù)據(jù)5200,如果這時候a回滾了,則a的修改應(yīng)該撤銷,b讀到的應(yīng)該是5000,但是實際上b讀到的是a修改之后的數(shù)據(jù) 5200,這就是臟讀。

2>不可重復(fù)讀

一個未提交的事務(wù)讀到了一個已經(jīng)提交的事務(wù)的數(shù)據(jù)

例子:事務(wù)a修改了sal,并立刻提交,b再讀sal,讀到的就是a修改之后的數(shù)據(jù)。

注意,這不是錯誤,一般是可以接受的,造成的后果僅僅是a每次讀到的數(shù)據(jù)可能不一樣

3>虛讀

一個未提交的數(shù)據(jù)讀到了一個已經(jīng)提交的事務(wù)的增加的數(shù)據(jù)

這是不可重復(fù)讀的一種情況

解決方法:設(shè)置參數(shù)

@Transactional(isolation = Isolation.READ_UNCOMMITTED )  不解決問題
@Transactional(isolation = Isolation.READ_COMMITTED )解決臟讀
 @Transactional(isolation = Isolation.REPEATABLE_READ)解決臟讀和不可重復(fù)讀  mysql默認(rèn)
@Transactional(isolation = Isolation.SERIALIZABLE) 三個都解決

效率從下往上越來越高

3.timeout

事務(wù)在多長時間內(nèi)必須提交,否則回滾事務(wù),mysql默認(rèn)是不超時

4.readonly

? ?默認(rèn)值是可以增刪改查,當(dāng)值為true時,只能查詢

5.rollbackfor?

出現(xiàn)哪些異常回滾

6.norollbackfor

? 出現(xiàn)哪些異常不回滾

原文鏈接:https://blog.csdn.net/sharesb/article/details/123932693

欄目分類
最近更新