インターフェース PlatformTransactionManager

すべてのスーパーインターフェース:
TransactionManager
すべての既知のサブインターフェース:
CallbackPreferringPlatformTransactionManagerResourceTransactionManager
すべての既知の実装クラス:
AbstractPlatformTransactionManagerDataSourceTransactionManagerHibernateTransactionManagerJdbcTransactionManagerJmsTransactionManagerJpaTransactionManagerJtaTransactionManager

public interface PlatformTransactionManager extends TransactionManager
これは、Spring の命令型トランザクションインフラストラクチャの中心的なインターフェースです。アプリケーションはこれを直接使用できますが、主に API として意図されたものではありません。通常、アプリケーションは TransactionTemplate または AOP による宣言型トランザクション境界のいずれかで動作します。

実装者には、提供された AbstractPlatformTransactionManager クラスから派生させることをお勧めします。AbstractPlatformTransactionManager クラスは、定義された伝播動作を事前実装し、トランザクション同期処理を処理します。サブクラスは、基礎となるトランザクションの特定の状態(開始、一時停止、再開、コミット)にテンプレートメソッドを実装する必要があります。

この戦略インターフェースの典型的な実装は JtaTransactionManager です。ただし、一般的な単一リソースのシナリオでは、JDBC、JPA、JMS などの Spring の特定のトランザクションマネージャーが推奨される選択肢です。

導入:
16.05.2003
作成者:
Rod Johnson, Juergen Hoeller
関連事項:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    ステータスに関して、指定されたトランザクションをコミットします。
    指定された伝播動作に従って、現在アクティブなトランザクションを返すか、新しいトランザクションを作成します。
    void
    指定されたトランザクションのロールバックを実行します。
  • メソッドの詳細

    • getTransaction

      指定された伝播動作に従って、現在アクティブなトランザクションを返すか、新しいトランザクションを作成します。

      分離レベルやタイムアウトなどのパラメーターは新しいトランザクションにのみ適用されるため、アクティブなトランザクションに参加する場合は無視されることに注意してください。

      さらに、すべてのトランザクション定義設定がすべてのトランザクションマネージャーでサポートされるわけではありません。適切なトランザクションマネージャーの実装は、サポートされていない設定が発生した場合に例外をスローする必要があります。

      上記の規則の例外は読み取り専用フラグです。明示的な読み取り専用モードがサポートされていない場合は無視してください。基本的に、読み取り専用フラグは潜在的な最適化のヒントにすぎません。

      パラメーター:
      definition - TransactionDefinition インスタンス(デフォルトでは null にすることができます)、伝播動作、分離レベル、タイムアウトなどを記述します
      戻り値:
      新規または現在のトランザクションを表すトランザクションステータスオブジェクト
      例外:
      TransactionException - ルックアップ、作成、システムエラーの場合
      IllegalTransactionStateException - 指定されたトランザクション定義を実行できない場合 (たとえば、現在アクティブなトランザクションが指定された伝播動作と競合している場合)
      関連事項:
    • commit

      void commit(TransactionStatus status) throws TransactionException
      ステータスに関して、指定されたトランザクションをコミットします。トランザクションがプログラムでロールバック専用としてマークされている場合、ロールバックを実行します。

      トランザクションが新しいものではない場合、周囲のトランザクションに適切に参加するためにコミットを省略します。以前のトランザクションが中断されて新しいトランザクションを作成できる場合は、新しいトランザクションをコミットした後に以前のトランザクションを再開します。

      コミットの呼び出しが完了すると、正常であるか例外をスローするかに関係なく、トランザクションを完全に完了してクリーンアップする必要があることに注意してください。このような場合、ロールバックコールは予期されません。

      具体的なトランザクションマネージャーの設定に応じて、commit は、コミット前のフラッシュまたは実際のコミットステップから DataAccessException も伝播する可能性があります。

      パラメーター:
      status - getTransaction メソッドによって返されるオブジェクト
      例外:
      UnexpectedRollbackException - トランザクションコーディネーターが開始した予期しないロールバックの場合
      HeuristicCompletionException - トランザクションコーディネーター側のヒューリスティックな決定が原因でトランザクションが失敗した場合
      TransactionSystemException - コミットまたはシステムエラーの場合 (通常、根本的なリソース障害が原因)
      IllegalTransactionStateException - 指定されたトランザクションがすでに完了している場合 (つまり、コミットまたはロールバックされます)
      TransactionException
      関連事項:
    • rollback

      void rollback(TransactionStatus status) throws TransactionException
      指定されたトランザクションのロールバックを実行します。

      トランザクションが新しいものではない場合は、周囲のトランザクションに適切に参加するために、ロールバックのみに設定します。新しいトランザクションを作成できるように以前のトランザクションが中断されている場合は、新しいトランザクションをロールバックしてから以前のトランザクションを再開します。

      コミットが例外をスローした場合、トランザクションでロールバックを呼び出さないでください。コミット例外が発生した場合でも、コミットが戻ると、トランザクションはすでに完了し、クリーンアップされています。その結果、コミットの失敗後のロールバック呼び出しは、IllegalTransactionStateException につながります。

      具体的なトランザクションマネージャーの設定によっては、rollback が DataAccessException も伝播する可能性があります。

      パラメーター:
      status - getTransaction メソッドによって返されるオブジェクト
      例外:
      TransactionSystemException - ロールバックまたはシステムエラーの場合 (通常、根本的なリソース障害が原因)
      IllegalTransactionStateException - 指定されたトランザクションがすでに完了している場合 (つまり、コミットまたはロールバックされます)
      TransactionException