5

Transaction Manager内のデフォルトのロールバックポリシーは、RuntimeExceptionsが発生したときに自動的にロールバックすることを知っています。ただし、伝播が許可されているチェック済みの例外がある場合はどうなりますか?

4

1 に答える 1

4

ただし、Spring Frameworkのトランザクションインフラストラクチャコードは、デフォルトでは、実行時のチェックされていない例外の場合にのみ、トランザクションにロールバックのマークを付けることに注意してください。つまり、スローされた例外がRuntimeExceptionのインスタンスまたはサブクラスである場合です。(エラーは、デフォルトではロールバックにもなります。)トランザクションメソッドからスローされたチェック済みの例外は、トランザクションがロールバックされることにはなりません。

ソース

チェックされた例外がスローされた場合でも、Springはすべてが正常であるかのようにトランザクションをコミットします。
必要に応じて、チェックされた例外のロールバックを設定できます。
好き

<tx:advice id="txAdvice" transaction-manager="txManager">
  <tx:attributes>
     <tx:method name="get*" read-only="false" rollback-for="AnyCheckedException"/>
     <tx:method name="*"/>
  </tx:attributes>
</tx:advice>

AnyCheckedExceptionがスローさ れるとロールバックを実行します。

これは役立つかもしれません:チェックされた例外とチェックされていない例外を伴うSpringトランザクション管理

于 2012-10-03T06:15:09.080 に答える