您好,登錄后才能下訂單哦!
spring事務(wù)的注意事項(xiàng)有哪些,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
事務(wù)一般是指數(shù)據(jù)庫(kù)事務(wù),是指作為一個(gè)程序執(zhí)行單元執(zhí)行的一系列操作,要么完全執(zhí)行,要么完全不執(zhí)行。事務(wù)就是判斷以結(jié)果為導(dǎo)向的標(biāo)準(zhǔn)。
(1).原子性(atomicity)
原子性就是一個(gè)不可分割的工作單元。簡(jiǎn)單的說(shuō),就是指事務(wù)包含的所有操作要么全部成功,要么全部失敗回滾。因此事務(wù)的操作如果成功就必須要完全應(yīng)用到數(shù)據(jù)庫(kù),如果失敗則不能對(duì)數(shù)據(jù)庫(kù)有任何影響。
(2).一致性(consistency)
一致性就是事務(wù)必須是使一個(gè)一致性狀態(tài)變成另一個(gè)狀態(tài),也就是說(shuō)一個(gè)書(shū)屋執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)。那轉(zhuǎn)賬來(lái)說(shuō),假設(shè)用戶A和用戶B兩者的錢(qián)加起來(lái)一共是5000.那么不管A和B之間如何轉(zhuǎn)賬,轉(zhuǎn)多少次,事務(wù)結(jié)束后兩者的錢(qián)加起來(lái)還是5000。
(3).隔離性(isolation)
隔離性就是一個(gè)事務(wù)的執(zhí)行不能被另一個(gè)事務(wù)干擾。當(dāng)多個(gè)用戶并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)操作同一張表時(shí),數(shù)據(jù)庫(kù)為每一個(gè)用戶開(kāi)啟的事務(wù),不能被其他事務(wù)的操作所干擾,并發(fā)事務(wù)之間要相互隔離。
(4).持久性(durability)
持久性是指一個(gè)事務(wù)一旦被提交了,那么對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的改變就是永久的。即使是在數(shù)據(jù)系統(tǒng)遇到故障的情況下也不會(huì)丟失提交事務(wù)的操作。
*臟讀:一個(gè)事務(wù)讀到了另一個(gè)事務(wù)未提交的數(shù)據(jù)
*不可重復(fù)讀:一個(gè)事務(wù)讀到另一個(gè)事務(wù)已經(jīng)提交(update)的數(shù)據(jù)導(dǎo)致多次查詢結(jié)果不一致
*虛幻讀:一個(gè)事務(wù)讀到了另一個(gè)事務(wù)已經(jīng)提交(insert)的數(shù)據(jù)導(dǎo)致多次查詢結(jié)果不一致。
對(duì)于sqlserver和oracle的默認(rèn)隔離級(jí)別是RC,mysql的默認(rèn)隔離級(jí)別是RR。
1.出現(xiàn)Exception是無(wú)法回滾的,只有拋出RuntimeException和Error異常時(shí)才能回滾。2.在事務(wù)代碼中捕獲了異常,是無(wú)法進(jìn)行回滾的。
3.如果是使用的spring+mvc模式。并且spring和mvc都掃描了service層(事務(wù)處理層),事務(wù)不生效。因?yàn)閟pring會(huì)有限加載mvc的配置文件,而事務(wù)的配置基本上都是在spring中,因?yàn)閟pring的子容器先于父容器啟動(dòng),造成在controller中注入service時(shí)還沒(méi)有加載事務(wù)。
4.mysql的myISAM引擎,是不支持事務(wù)的,需要設(shè)置為innoDB模式。
5.事務(wù)的開(kāi)啟必須放到listener里面加載,如果放到dispatchServlet的配置里面,事務(wù)不生效。
6.如果在接口中使用@Transactional,只有JDK動(dòng)態(tài)代理才能生效,CGLIB動(dòng)態(tài)代理是不生效的,因?yàn)樽⒔馐遣荒芾^承的。
關(guān)于spring事務(wù)的注意事項(xiàng)有哪些問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。