春二つの一般的なトランザクションの伝搬プロパティ説明

トランザクショントランザクションは、アクションは、データベースコレクションに対する操作のセットです。トランザクションは、近代的なデータベース理論の中心的な概念の一つです。
グループまたは全ての処理ステップが発生したり、ステップが実行されない場合、我々は、トランザクションなどのプロセスステップのセットを呼び出します。
すべてのステップが完全に実行操作と同じである場合、我々は、トランザクションがコミットされていることを言います。
マルチステップの一部がコミットされないステップで得られた、失敗したので、トランザクションは元のシステムの状態にロールバックされなければなりません。

 

七は、一般的な属性を広めます:

1. PROPAGATION_REQUIRED -現在のトランザクションと現在のトランザクションがある場合は、何も現在のトランザクションが存在しない場合、新しい1つのトランザクションを作成します。これは、最も一般的な選択です。

2.PROPAGATION_SUPPORTS - 何のトランザクションが非トランザクションの方法で実行されない場合は、現在のトランザクションをサポートしています。

3.PROPAGATION_MANDATORY - トランザクションが、例外をスローしない場合は、現在のトランザクションをサポートしています。

4. PROPAGATION_REQUIRES_NEW -現在のトランザクションが存在する場合は、新しいトランザクション、現在のトランザクションが保留中。新しいトランザクションを開き、新しいトランザクションが終了する、トランザクションの前に保留中のウェイク、進みます。何の現在のトランザクションが存在しない場合は、新しいトランザクションを作成します

5.PROPAGATION_NOT_SUPPORTED - 現在のトランザクションが存在する場合、保留中の現在のトランザクションを置く、非トランザクションウェイに操作を行います。

6.PROPAGATION_NEVER - 現在のトランザクションが存在する場合は、例外がスローされ、非トランザクションの方法を実行します。

7.PROPAGATION_NESTED - 現在のトランザクションが存在する場合、それはネストされたトランザクション内で実行されます。何の取引はPROPAGATION_REQUIRED同様の操作で行われていない場合。

 

 

ファイブ分離レベル:
ISOLATION_DEFAULT
これがデフォルトのデータベースのトランザクション分離レベルを使用し、PlatfromTransactionManagerのデフォルトの分離レベルです。

また、4つの対応JDBC分離レベルを有します。

ISOLATION_READ_UNCOMMITTED
これは多くの人が外のデータコミットされていないトランザクションを見ることができ、トランザクションを充電しないで最低のトランザクション分離レベルは、されています。
汚れを持っています。この分離レベルは、読み取り、繰り返し不可の読み取り、およびファントム読み取り。

ISOLATION_READ_COMMITTED
トランザクションが別のトランザクションによって読み取られるために提出されたデータを修正し保証します。別のトランザクションがコミットされていないトランザクションを読み取ることができません。
ダーティリードを避けるために、このトランザクションの分離レベルは発生しますが、非反復読み取りとファントム読み取り表示されることがあります。

ISOLATION_REPEATABLE_READ
このトランザクションの分離レベルは、ダーティリード防ぎ、反復不能読み取ります。しかし、ファントム読み込みが発生することがあります。
トランザクションは別のコミットされていないトランザクションからデータを読み取ることはできませんが、また生産(非反復可能読み取り)を確保するために、次のような状況を回避することを確実にすることに加えて。

ISOLATION_SERIALIZABLE
これは最も高価ですが、最も信頼性の高いトランザクション分離レベルのコスト。トランザクションが順次実行として処理されます。
汚れを防ぐために、また読み込み、非反復可能読み取りが、また、ファントム読み取りを回避します。

キーワード:
1)マジック読書:トランザクション1トランザクション2が記録され、提出されたレコードの増加を読み取ると、あなたが見ることができるには、2つの新しいトランザクションレコードトランザクション1が再び読み込む;
2)非反復可能読み取り:トランザクション・レコードの読み取り1トランザクション2がレコードを更新し、送信したとき、あなたは取引が再び読み込まれると2改正後の1つのトランザクションを記録を見ることができる;
3)ダーティリード:トランザクション1がレコードを更新しますが、提出しなかった、トランザクション2は、更新後の行を読み込み、そして、ロールバックトランザクションT1は、今読んでT2は無効です。

ダーティ読み取り:トランザクションを指し、データコミットされていないトランザクションを読み込み、

非反復可能読み取り:トランザクション内のデータテーブルの行を読み取り、複数のリードトランザクションは、別のトランザクションによって提出されたデータとは異なる結果を読み出します。

ダミーリード(マジックリーディング):(挿入)する前と後の一貫性のないリードが得られ、別のトランザクションでのトランザクションを挿入されたデータを読み出します

 

二つの共通財産トランザクション伝搬解析:

1.コールコントローラで2つのサービスメソッド

場合は、伝播のデフォルトは、デフォルトのオープンPropagation.REQUIREDを表し、第2のサービスが例外をスローしながら、すべて同じトランザクションは、トランザクションがロールバックされます

 

 

2.サービスはまだコントローラで2つのメソッドを呼び出します

REQUIRES_NEWを変更するサービスの中の伝搬特性、方法でサービス、およびその他のサービスは、伝搬特性を追加することなく、デフォルトに属している場合

トランザクションのロールバックが発生した場合、この時、増加した伝播特性による最初のサービス、

 

https://blog.csdn.net/qianxiaopeng/article/details/82427689

https://blog.csdn.net/iteye_7592/article/details/81573981

https://blog.csdn.net/baidu_37107022/article/details/75578140

おすすめ

転載: www.cnblogs.com/qianjinyan/p/11348750.html