本文原發於 JavaResearch 社區,因 CSDN 關鍵字過濾無法發布,現整理核心內容如下:
TransactionTemplate 或直接操作 PlatformTransactionManager,侵入性強但靈活控制邊界。@Transactional 注解或 XML 配置切面,實現業務邏輯與事務邊界分離,推薦生產環境使用。| 屬性 | 說明 |
|---|---|
| propagation | 傳播行為(REQUIRED、REQUIRES_NEW、NESTED 等),定義方法調用時事務邊界合並/掛起策略。 |
| isolation | 隔離級別(READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE),權衡一致性與並發性能。 |
| timeout | 超時時間(秒),超過自動回滾,防止長事務佔用資源。 |
| readOnly | 只讀優化提示,適用於查詢場景,部分數據庫可加速。 |
| rollbackFor / noRollbackFor | 指定觸發/不觸發回滾的異常類型,默認僅 RuntimeException/Error 回滾。 |
throw ex 或設置 rollbackFor=Exception.class。readOnly=true,配合連接池只讀連接提升吞吐。單數據源場景用 DataSourceTransactionManager;多資源(多庫、JMS)需 JtaTransactionManager 整合 JTA 實現(Atomikos、Bitronix 或應用服務器內置),實現兩階段提交 (2PC)。