一、Propagation常用取值:
REQUIRED(默認值):在有transaction狀態下執行;如當前沒有transaction,則創建新的transaction。
REQUIRES_NEW:創建新的transaction並執行;如果當前已有transaction,則將當前transaction掛起。
MANDATORY:必須在有transaction狀態下執行,如果當前沒有transaction,則拋出異常IllegalTransactionStateException。
二、REQUIRED和REQUIRES_NEW的理解
主方法和子方法:
1 主:REQUREID 子:REQUREID
主方法:trycatch中調用子方法,那麼子方法需要rollback時,即使被主方法catch住,這個事務還是會回滾是嗎?
答:1是用的同一個事務,所以會一起回滾。
2 主:REQUREID 子:REQUIRES_NEW
子方法正常執行,回到主方法,主方法接下來的語句造成了rollback,那麼子方法是會提交還是rollback呢?
答:2是用的不同的事務,是獨立的。