[Javaシニアアーキテクチャー必須スキル]Springトランザクション制御


一、プログラミング式取引制御関連オブジェクト
1.1.PlatformTransactionManagerインタフェース
プラットフォームトランザクションマネージャ
方法
説明
TransactionStatus getTransaction(TransactonDefination defination)
トランザクションのステータス情報の取得
void commit(TransactionStatus status)
トランザクションのコミット
void rollback(TransactionStatus status)
トランザクションのロールバック
1.2.TransactonDefination
物事の属性定義
方法
説明
int getIsoIationLevel()
トランザクションの独立性レベルの取得
int getPropogationBehavior()
トランザクションの伝播動作の取得
int getTimout()
取得タイムアウト
int isReadOnly()
読み取り専用かどうか
  • トランザクションの独立性レベル.汚れた読み取り、重複しない読み取り、虚読みを解決します.
  • ISOLATION_DEFAULT
  • ISOLATION_READ_UNCOMMITTED
  • ISOLATION_READ_COMMITTED
  • ISOLATION_REPEATABLE_READ
  • ISOLATION_SERIALIZABLE

  • トランザクションの伝播動作
  • REQUIRD:現在トランザクションがない場合は新規トランザクションを作成し、すでにトランザクションがある場合はこのトランザクションに追加します.デフォルト値
  • SUPPORTS:現在のトランザクションをサポートし、現在トランザクションがない場合は非トランザクションで実行(トランザクションなし)
  • MANDATORY:現在のトランザクションを使用し、現在トランザクションがない場合は例外
  • を放出します.
  • REQUERS_NEW:新規トランザクションを作成し、現在トランザクションに存在する場合は、現在のトランザクションを保留します.
  • NOT_SUPPORTED:非トランザクションで実行し、現在トランザクションが存在する場合は
  • を保留します.
  • NEVER:非トランザクションで実行され、現在トランザクションが存在する場合、例外
  • が放出されます.
  • NESTED:現在トランザクションが存在する場合、ネストされたトランザクション内で実行されます.現在トランザクションがない場合は、REQUIRDと同様のアクション
  • を実行します.
  • タイムアウト:デフォルトは-1で、タイムアウト制限はありません.ある場合は秒単位で
  • を設定.
  • 読み取り専用かどうか:クエリーを推奨する場合は読み取り専用に設定します.

  • 1.3.TransactionStatus
    物事の運行状態
    方法
    説明
    boolean hasSavepoint()
    ロールバックポイントを保存するかどうか
    boolean isCompleted()
    トランザクションが完了したかどうか
    boolean isNewTransaction()
    新しいものかどうか
    boolean isRollbackOnly()
    トランザクションがロールバックされるかどうか
    二、XMLに基づく宣言式事物制御
  • 宣言式事物制御
  • Springの宣言式事物制御は、宣言によってトランザクションを処理し、xmlまたは注釈においてトランザクションを構成してコード制御
  • に代わる.
  • の役割:
  • トランザクションマネージャは、開発されたコンポーネントに侵入しません.ビジネスロジックオブジェクトは、トランザクションマネージャの中にあることを認識しません.実際には、トランザクション管理はシステムレベルのサービスであり、ビジネスロジックの一部ではありません.トランザクション管理の計画を変更するには、ファイルの再構成を定義するだけで
  • です.
  • トランザクション管理を必要としない場合、設定ファイルを修正すれば、トランザクション管理サービスを削除することができ、コードを変更して再コンパイルする必要がなく、
  • を維持するのに便利である.
  • Spring宣言式事物制御の底層はAOP
  • である.

    2.1.第一歩:依存パッケージの導入
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-txartifactId>
        <version>5.2.8.RELEASEversion>
    dependency>
    

    2.2.第二部:xmlの配置
    
    <bean id="transactionManager" class="DataSourceTransactionManager">
    	<property name="dataSource" ref="dataSource"/>
    bean>
    
    <tx:advice id="txAdvice" transaction-manger="transactionManager">
    	<tx:attributes>
        	<tx:method name="*"/>
        tx:attributes>
    tx:advice>
    
    <aop:config>
    	<aop:advisor advice-ref="txAdvice" pointcut="execution(* )"/>
    aop:config>
    

    三、注釈に基づく声明式事物制御
    トランザクション・ノート・ドライブ
    <tx:annotation-driven transaction-manager="transactionManager">
    
    @Transactional(           ),           。         ,