Springトランザクション管理における例外処理
Springトランザクション管理では、例外処理に以下の方法が利用できます。
- @TransactionalアノテーションのrollbackFor属性を使用して、ロールバックする必要がある例外タイプを指定します。指定した例外タイプが発生すると、トランザクションはロールバックされます。
@Transactional(rollbackFor = Exception.class)
public void method() {
// ...
}
- @TransactionalアノテーションのnoRollbackFor属性を使用して、ロールバック不要例外タイプを指定します。指定した例外タイプが発生した場合、トランザクションはロールバックされません。
@Transactional(noRollbackFor = MyException.class)
public void method() {
// ...
}
- トランザクションが異常終了した場合に、方法内でtry-catchブロックを使用して例外を取得し、catchブロック内でTransactionAspectSupport.currentTransactionStatus().setRollbackOnly()メソッドをを手動で呼び出してトランザクションのロールバックを設定します。
@Transactional
public void method() {
try {
// ...
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// 处理异常
}
}
業務内容の要件に応じてこれらの手法を選択的に取り入れることで、トランザクションの制御および異常処理を実現できます。