インターフェース TransactionDefinition

すべての既知のサブインターフェース:
ResourceTransactionDefinitionTransactionAttribute
すべての既知の実装クラス:
DefaultTransactionAttributeDefaultTransactionDefinitionDelegatingTransactionAttributeDelegatingTransactionDefinitionRuleBasedTransactionAttributeTransactionTemplate

public interface TransactionDefinition
Spring 準拠のトランザクションプロパティを定義するインターフェース。EJB CMT 属性に類似した伝播動作定義に基づいています。

実際の新しいトランザクションが開始されない限り、分離レベルとタイムアウトの設定は適用されないことに注意してください。PROPAGATION_REQUIREDPROPAGATION_REQUIRES_NEWPROPAGATION_NESTED のみがこれを引き起こす可能性があるため、通常、他の場合にこれらの設定を指定しても意味がありません。さらに、すべてのトランザクションマネージャーがこれらの高度な機能をサポートしているわけではないため、デフォルト以外の値を指定すると、対応する例外がスローされる可能性があることに注意してください。

読み取り専用フラグは、実際のリソーストランザクションによってサポートされているか、リソースレベルで非トランザクション的に動作しているかにかかわらず、すべてのトランザクションコンテキストに適用されます。後者の場合、フラグは Hibernate Session などのアプリケーション内の管理対象リソースにのみ適用されます。

導入:
08.05.2003
作成者:
Juergen Hoeller
関連事項:
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final int
    基礎となるデータストアのデフォルトの分離レベルを使用します。
    static final int
    ダーティリードが防止されることを示します。繰り返し不可の読み取りとファントム読み取りが発生する可能性があります。
    static final int
    ダーティリード、繰り返し不可能なリード、ファントムリードが発生する可能性があることを示します。
    static final int
    ダーティリードおよび繰り返し不可のリードが防止されることを示します。ファントムリードが発生する可能性があります。
    static final int
    ダーティリード、繰り返し不可能なリード、ファントムリードが防止されることを示します。
    static final int
    現在のトランザクションをサポートします。現在のトランザクションが存在しない場合、例外をスローします。
    static final int
    現在のトランザクションが存在する場合はネストされたトランザクション内で実行し、それ以外の場合は PROPAGATION_REQUIRED のように動作します。
    static final int
    現在のトランザクションをサポートしません。現在のトランザクションが存在する場合、例外をスローします。
    static final int
    現在のトランザクションをサポートしません。むしろ、常に非トランザクションで実行します。
    static final int
    現在のトランザクションをサポートします。存在しない場合は新しいものを作成します。
    static final int
    新しいトランザクションを作成し、現在のトランザクションが存在する場合は中断します。
    static final int
    現在のトランザクションをサポートします。存在しない場合は非トランザクションで実行します。
    static final int
    基になるトランザクションシステムの既定のタイムアウトを使用するか、タイムアウトがサポートされていない場合はなしを使用します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    default int
    分離レベルを返します。
    default StringSE
    このトランザクションの名前を返します。
    default int
    伝播動作を返します。
    default int
    トランザクションタイムアウトを返します。
    default boolean
    読み取り専用トランザクションとして最適化するかどうかを返します。
    デフォルトで変更不可能な TransactionDefinition を返します。
  • フィールドの詳細

    • PROPAGATION_REQUIRED

      static final int PROPAGATION_REQUIRED
      現在のトランザクションをサポートします。存在しない場合は新しいものを作成します。同じ名前の EJB トランザクション属性に似ています。

      これは通常、トランザクション定義のデフォルト設定であり、通常はトランザクション同期スコープを定義します。

      関連事項:
    • PROPAGATION_SUPPORTS

      static final int PROPAGATION_SUPPORTS
      現在のトランザクションをサポートします。存在しない場合は非トランザクションで実行します。同じ名前の EJB トランザクション属性に似ています。

      注意 : トランザクション同期を使用するトランザクションマネージャーの場合、PROPAGATION_SUPPORTS は、同期が適用される可能性のあるトランザクションスコープを定義するため、トランザクションがまったくない場合とは少し異なります。結果として、同じリソース (JDBC Connection、Hibernate Session など) が指定されたスコープ全体で共有されます。正確な動作は、トランザクションマネージャーの実際の同期構成に依存することに注意してください。

      一般に、PROPAGATION_SUPPORTS は注意して使用してください。特に、PROPAGATION_SUPPORTS スコープで PROPAGATION_REQUIRED または PROPAGATION_REQUIRES_NEW に依存しないでください (実行時に同期の競合が発生する可能性があります)。このようなネスティングが避けられない場合は、トランザクションマネージャーを適切に構成してください (通常は、「実際のトランザクションでの同期」に切り替えます)。

      関連事項:
    • PROPAGATION_MANDATORY

      static final int PROPAGATION_MANDATORY
      現在のトランザクションをサポートします。現在のトランザクションが存在しない場合、例外をスローします。同じ名前の EJB トランザクション属性に似ています。

      PROPAGATION_MANDATORY スコープ内のトランザクション同期は、常に周囲のトランザクションによって駆動されることに注意してください。

      関連事項:
    • PROPAGATION_REQUIRES_NEW

      static final int PROPAGATION_REQUIRES_NEW
      新しいトランザクションを作成し、現在のトランザクションが存在する場合は中断します。同じ名前の EJB トランザクション属性に似ています。

      注意 : 実際のトランザクションの一時停止は、すべてのトランザクションマネージャーですぐに使用できるわけではありません。これは特に JtaTransactionManager に適用され、jakarta.transaction.TransactionManager を使用できるようにする必要があります(標準の Jakarta EE ではサーバー固有です)。

      PROPAGATION_REQUIRES_NEW スコープは、常に独自のトランザクション同期を定義します。既存の同期は適切に一時停止および再開されます。

      関連事項:
    • PROPAGATION_NOT_SUPPORTED

      static final int PROPAGATION_NOT_SUPPORTED
      現在のトランザクションをサポートしません。むしろ、常に非トランザクションで実行します。同じ名前の EJB トランザクション属性に似ています。

      注意 : 実際のトランザクションの一時停止は、すべてのトランザクションマネージャーですぐに使用できるわけではありません。これは特に JtaTransactionManager に適用され、jakarta.transaction.TransactionManager を使用できるようにする必要があります(標準の Jakarta EE ではサーバー固有です)。

      トランザクション同期は PROPAGATION_NOT_SUPPORTED スコープ内で使用できないことに注意してください。既存の同期は一時停止され、適切に再開されます。

      関連事項:
    • PROPAGATION_NEVER

      static final int PROPAGATION_NEVER
      現在のトランザクションをサポートしません。現在のトランザクションが存在する場合は、例外をスローします。同じ名前の EJB トランザクション属性に類似しています。

      トランザクション同期は PROPAGATION_NEVER スコープ内で使用できないことに注意してください。

      関連事項:
    • PROPAGATION_NESTED

      static final int PROPAGATION_NESTED
      現在のトランザクションが存在する場合はネストされたトランザクション内で実行し、それ以外の場合は PROPAGATION_REQUIRED のように動作します。EJB には類似の機能はありません。

      注意 : ネストされたトランザクションの実際の作成は、特定のトランザクションマネージャーでのみ機能します。デフォルトでは、これは JDBC 3.0+ ドライバーで作業する場合の JDBC DataSourceTransactionManager にのみ適用されます。一部の JTA プロバイダーは、ネストされたトランザクションもサポートしている場合があります。

      関連事項:
    • ISOLATION_DEFAULT

      static final int ISOLATION_DEFAULT
      基礎となるデータストアのデフォルトの分離レベルを使用します。

      他のすべてのレベルは、JDBC 分離レベルに対応します。

      関連事項:
    • ISOLATION_READ_UNCOMMITTED

      static final int ISOLATION_READ_UNCOMMITTED
      ダーティリード、繰り返し不可能なリード、ファントムリードが発生する可能性があることを示します。

      このレベルでは、あるトランザクションで変更された行を、その行の変更がコミットされる前に別のトランザクションで読み取ることができます(「ダーティリード」)。変更のいずれかがロールバックされると、2 番目のトランザクションが無効な行を取得します。

      関連事項:
    • ISOLATION_READ_COMMITTED

      static final int ISOLATION_READ_COMMITTED
      ダーティリードが防止されることを示します。繰り返し不可の読み取りとファントム読み取りが発生する可能性があります。

      このレベルは、トランザクションがコミットされていない変更を含む行を読み取ることを禁止するだけです。

      関連事項:
    • ISOLATION_REPEATABLE_READ

      static final int ISOLATION_REPEATABLE_READ
      ダーティリードおよび繰り返し不可のリードが防止されることを示します。ファントムリードが発生する可能性があります。

      このレベルは、トランザクションがコミットされていない変更を含む行を読み取ることを禁止します。また、1 つのトランザクションが行を読み取り、2 番目のトランザクションが行を変更し、最初のトランザクションが行を再度読み取り、2 番目に異なる値を取得する状況も禁止します。時間(「反復不能読み取り」)。

      関連事項:
    • ISOLATION_SERIALIZABLE

      static final int ISOLATION_SERIALIZABLE
      ダーティリード、繰り返し不可能なリード、ファントムリードが防止されることを示します。

      このレベルには、ISOLATION_REPEATABLE_READ の禁止事項が含まれ、1 つのトランザクションが WHERE 条件を満たすすべての行を読み取り、2 番目のトランザクションがその WHERE 条件を満たす行を挿入し、最初のトランザクションが同じ条件を再読み取りして、2 回目の読み取りでの追加の「ファントム」行。

      関連事項:
    • TIMEOUT_DEFAULT

      static final int TIMEOUT_DEFAULT
      基になるトランザクションシステムの既定のタイムアウトを使用するか、タイムアウトがサポートされていない場合はなしを使用します。
      関連事項:
  • メソッドの詳細

    • getPropagationBehavior

      default int getPropagationBehavior()
      伝播動作を返します。

      this interface で定義された PROPAGATION_XXX 定数のいずれかを返さなければなりません。

      デフォルトは PROPAGATION_REQUIRED です。

      戻り値:
      伝播挙動
      関連事項:
    • getIsolationLevel

      default int getIsolationLevel()
      分離レベルを返します。

      this interface で定義された ISOLATION_XXX 定数のいずれかを返さなければなりません。これらの定数は、ConnectionSE の同じ定数の値と一致するように設計されています。

      新たに開始されたトランザクションにのみ適用されるため、PROPAGATION_REQUIRED または PROPAGATION_REQUIRES_NEW での使用専用に設計されています。分離レベルが異なる既存のトランザクションに参加するときに分離レベルの宣言を拒否する場合は、トランザクションマネージャーで "validateExistingTransactions" フラグを "true" に切り替えることを検討してください。

      デフォルトは ISOLATION_DEFAULT です。ISOLATION_DEFAULT 以外のレベルが指定された場合、カスタム分離レベルをサポートしないトランザクションマネージャーは例外をスローすることに注意してください。

      戻り値:
      分離レベル
      関連事項:
    • getTimeout

      default int getTimeout()
      トランザクションタイムアウトを返します。

      秒数または TIMEOUT_DEFAULT を返す必要があります。

      新たに開始されたトランザクションにのみ適用されるため、PROPAGATION_REQUIRED または PROPAGATION_REQUIRES_NEW での使用専用に設計されています。

      タイムアウトをサポートしないトランザクションマネージャーは、TIMEOUT_DEFAULT 以外のタイムアウトが指定された場合に例外をスローすることに注意してください。

      デフォルトは TIMEOUT_DEFAULT です。

      戻り値:
      トランザクションのタイムアウト
    • isReadOnly

      default boolean isReadOnly()
      読み取り専用トランザクションとして最適化するかどうかを返します。

      読み取り専用フラグは、実際のリソーストランザクション(PROPAGATION_REQUIRED/PROPAGATION_REQUIRES_NEW)によって裏付けられているか、リソースレベルで非トランザクションで動作している(PROPAGATION_SUPPORTS)かに関わらず、すべてのトランザクションコンテキストに適用されます。後者の場合、フラグは Hibernate Session などのアプリケーション内の管理対象リソースにのみ適用されます。

      これは、実際のトランザクションサブシステムのヒントとしてのみ機能します。 必ずしも書き込みアクセスの試行が失敗するわけではありません。読み取り専用ヒントを解釈できないトランザクションマネージャーは、読み取り専用トランザクションを要求されたときに例外をスローしません

      戻り値:
      トランザクションを読み取り専用として最適化する場合は true (デフォルトで false )
      関連事項:
    • getName

      @Nullable default StringSE getName()
      このトランザクションの名前を返します。null にすることができます。

      これは、該当する場合、トランザクションモニターに表示されるトランザクション名として使用されます。

      Spring の宣言的トランザクションの場合、公開される名前は fully-qualified class name + "." + method name (デフォルト)です。

      戻り値:
      このトランザクションの名前(デフォルトでは null }
      関連事項:
    • withDefaults

      static TransactionDefinition withDefaults()
      デフォルトで変更不可能な TransactionDefinition を返します。

      カスタマイズの目的で、代わりに変更可能な DefaultTransactionDefinition を使用してください。

      導入:
      5.2