紙上得來(lái)終覺(jué)淺指郁,絕知此事要躬行
本次的主角是 @Transactional(propagation= Propagation.NEVER)
被申明的方法不會(huì)創(chuàng)建事務(wù),調(diào)用者方法上使用了事務(wù)則報(bào)IllegalTransactionStateException 異常
還有@Transactional(propagation= Propagation.NESTED)
這個(gè)傳播行為的作用和REQUIRED的作用差不多跺讯,如果調(diào)用者沒(méi)有事務(wù)托慨,它自己會(huì)創(chuàng)建事務(wù)瑰抵;如果調(diào)用者有事務(wù)則加入這個(gè)事務(wù)寇仓。但是它的功能要比REQUIRED強(qiáng)大举户,它能夠讓被調(diào)用者部分回滾
。具體的作用以后說(shuō)
1遍烦、InsertUser 加上never俭嘁,InsertCuser 不加事務(wù)
兩者均以無(wú)事務(wù)的狀態(tài)運(yùn)行
2、InsertUser 不加事務(wù) 服猪,InsertCuser 加上never
兩者均以無(wú)事務(wù)的狀態(tài)運(yùn)行
3供填、InsertUser 加上never ,InsertCuser 加上never
兩者均以無(wú)事務(wù)的狀態(tài)運(yùn)行
4罢猪、InsertUser 加上never 近她,InsertCuser 加上nested
InsertUser 無(wú)事務(wù)狀態(tài)執(zhí)行,InsertCuser 創(chuàng)建事務(wù)
5膳帕、InsertUser 加上nested 粘捎,InsertCuser 加上never
InsertUser 創(chuàng)建事務(wù),InsertCusr報(bào)出異常
org.springframework.transaction.IllegalTransactionStateException: Existing transaction found for transaction marked with propagation 'never'
6危彩、InsertUser 加上nested晌端,InsertCuser 不加事務(wù)
InsertUser 將事務(wù)傳播給InsertCuser ,兩者使用同一事務(wù)
7恬砂、InsertUser 加上不加事務(wù)咧纠,InsertCuser 加上nested
InsertUser 非事務(wù)狀態(tài)執(zhí)行,InsertCuser 創(chuàng)建事務(wù)
8泻骤、InsertUser 加上nested漆羔,InsertCuser 加上nested
InsertUser 將事務(wù)傳播給InsertCuser ,兩者使用同一事務(wù)
大總結(jié)
實(shí)驗(yàn) | InsertUser 調(diào)用者
|
InsertCuser 被調(diào)用者
|
結(jié)果 |
---|---|---|---|
1 | never | 不加 | 兩者均以無(wú)事務(wù)的狀態(tài)運(yùn)行 |
2 | 不加 | never | 兩者均以無(wú)事務(wù)的狀態(tài)運(yùn)行 |
3 | never | never | 兩者均以無(wú)事務(wù)的狀態(tài)運(yùn)行 |
4 | never | nested | InsertUser 無(wú)事務(wù)狀態(tài)執(zhí)行狱掂,InsertCuser 創(chuàng)建事務(wù) |
5 | nested | never | InsertUser 創(chuàng)建事務(wù)演痒,InsertCusr報(bào)出異常IllegalTransactionStateException |
6 | nested | 不加 | InsertUser 將事務(wù)傳播給InsertCuser ,兩者使用同一事務(wù) |
7 | 不加 | nested | InsertUser 非事務(wù)狀態(tài)執(zhí)行趋惨,InsertCuser 創(chuàng)建事務(wù) |
8 | nested | nested | InsertUser 將事務(wù)傳播給InsertCuser 鸟顺,兩者使用同一事務(wù) |