PROPAGATION_REQUIRED -- 支持當前事務(wù),如果當前沒有事務(wù),就新建一個事務(wù)。這是最常見的選擇。
PROPAGATION_SUPPORTS -- 支持當前事務(wù),如果當前沒有事務(wù),就以非事務(wù)方式執(zhí)行。
PROPAGATION_MANDATORY -- 支持當前事務(wù),如果當前沒有事務(wù),就拋出異常。
PROPAGATION_REQUIRES_NEW -- 新建事務(wù),如果當前存在事務(wù),把當前事務(wù)掛起。
PROPAGATION_NOT_SUPPORTED -- 以非事務(wù)方式執(zhí)行操作,如果當前存在事務(wù),就把當前事務(wù)掛起。
PROPAGATION_NEVER -- 以非事務(wù)方式執(zhí)行,如果當前存在事務(wù),則拋出異常。
PROPAGATION_NESTED -- 如果當前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行。如果當前沒有事務(wù),則進行與PROPAGATION_REQUIRED類似的操作。
前六個策略類似于EJB CMT,第七個(PROPAGATION_NESTED)是Spring所提供的一個特殊變量。
它要求事務(wù)管理器或者使用JDBC 3.0 Savepoint API提供嵌套事務(wù)行為(如Spring的DataSourceTransactionManager)