実際には、PROPAGATION_NESTED(現在のトランザクションが存在する場合はネストされたトランザクション内で実行)とPROPAGATION_Required(現在のトランザクションをサポートする)の違いを探します。PROPAGATION_NESTEDとPROPAGATION_Requiredは春に必要ですか?
以下は、単純なユースケースである
はメインクラスでは、我々は法1を呼び出し、JDBC [トランザクション1]を使用して、顧客を作成すると言います。まだコミットされていません。メインクラスのmethod2を呼び出し、ちょうど作成された顧客[Transaction2]のアカウントを作成します。今それを約束する。トランザクション2をネストされたトランザクションとして呼び出すことができます。我々はPROPAGATION_NESTED
としてトランザクション定義を定義する場合はネストされたとして私の理解あたりとして
は今、トランザクション2が扱われますが、我々はPROPAGATION_Requiredとしてそれを定義した場合には、現在のトランザクションをサポートします。ネストされたものと必要なものの違いは何ですか?
この例の場合、mainクラスではmethod1を呼び出し、jdbc [Transaction1]を使用して顧客を作成します。まだコミットされていません。メインクラスのmethod2を呼び出し、ちょうど作成された顧客[Transaction2]のアカウントを作成します。今それを約束する。あなたの説明どおり、これらのトランザクションは両方とも1つのトランザクションの一部として扱われます(接続で最大1つのトランザクションが存在する可能性があるため)。セーブポイントを部分的にロールバックまたはコミットすると、トランザクション2をネストされたトランザクションとして呼び出します。 –
@Mohit Gupta:セーブポイントを使用して部分的にコミットすることはできません。 – Olaf