??鍵盤敲爛,年薪30萬(wàn)??
目錄
Spring中的事務(wù)管理
問(wèn)題拋出:
解決方案:
@Transactional注解:
rollbackFor屬性:
propagation屬性:
應(yīng)用:
??總結(jié)
知識(shí)回顧:
- ?什么是事務(wù)
事務(wù)是對(duì)數(shù)據(jù)操作的集合,它是數(shù)據(jù)操作的最小執(zhí)行單位,也就是說(shuō),要么一個(gè)事務(wù)中操作全部執(zhí)行完畢,要么全都不執(zhí)行。
- ??事務(wù)的四大特性
原子性:事務(wù)是數(shù)據(jù)操作的最小執(zhí)行單位
一致性:要么全部執(zhí)行完畢,要么全都不執(zhí)行
隔離性:事務(wù)之間互相獨(dú)立
持久性:事務(wù)提交對(duì)數(shù)據(jù)的修改是永久性的
Spring中的事務(wù)管理
問(wèn)題拋出:
當(dāng)執(zhí)行刪除部門操作時(shí),該部門下對(duì)應(yīng)的員工也要?jiǎng)h除,這兩個(gè)操作必須保持一致,如果刪除部門后程序遇到了異常退出,這就會(huì)造成數(shù)據(jù)不一致。
解決方案:
我們把兩個(gè)操作看成一個(gè)事務(wù),在刪除部門時(shí)開(kāi)啟事務(wù),刪除完員工提交事務(wù),當(dāng)遇到異常就回滾事務(wù),這樣問(wèn)題就可以解決。
@Transactional注解:
概念:Transctional注解是Spring已經(jīng)封裝好的一個(gè)控制事務(wù)是否提交和回滾的注解
位置:業(yè)務(wù)(service)層的方法上、類上、接口上
作用:將當(dāng)前方法交給spring進(jìn)行事務(wù)管理,方法執(zhí)行前,開(kāi)啟事務(wù);成功執(zhí)行完畢,提交事務(wù);出現(xiàn)異常,回滾事務(wù)。
注意:Transactional修飾的事務(wù)默認(rèn)遇到運(yùn)行異常才回滾事務(wù),遇到編譯異?;蚱渌惓_€是會(huì)直接退出程序。
rollbackFor屬性:
rollbackFor用于自定義遇到哪些異常時(shí)回滾事務(wù)。
@Transactional(rollbackFor = Exception.class) //將該方法看作一個(gè)事務(wù),遇到異?;貪L,但是默認(rèn)只是遇到運(yùn)行異常才會(huì)回滾
@Override
public void deleteById(Integer id) {
deptMapper.deleteById(id); //刪除部門信息
empMapper.deleteByDeptId(id); //刪除員工信息
}
propagation屬性:
事務(wù)的傳播行為:
一個(gè)事務(wù)的方法被另一個(gè)事務(wù)方法調(diào)用時(shí),另一個(gè)事務(wù)該如何控制。
常見(jiàn)的事務(wù)傳播行為(只記前兩個(gè)就可):
應(yīng)用:
需求:解散部門時(shí),無(wú)論是成功還是失敗,都要記錄操作日志。
步驟:
? ①. 解散部門:刪除部門、刪除部門下的員工
? ②. 記錄日志到數(shù)據(jù)庫(kù)表中
??總結(jié)
@Transactional注解用于控制spring事務(wù)管理
@rollbackFor可以指定遇到哪些異?;貪L文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-796487.html
@propagation指定事務(wù)的傳播行為文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-796487.html
到了這里,關(guān)于【spring(四)】Spring事務(wù)管理和@Transactional注解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!