私の質問は基本的にはhereと同じですが、私は答えに満足していないので、私はこの質問を書いています。 Springでのトランザクション停止はどのように機能しますか?
は春Frameworkのマニュアルでは、PROPAGATION_REQUIRES_NEWのために現在のトランザクションが中断されることが述べられています。これは実際どのように実装されていますか?ほとんどのデータベースはネストされたトランザクションをサポートしておらず、1つの接続で1つのトランザクションしか実行できないことがわかっています。つまり、元のトランザクションを「使用しない」だけでなく、新しいトランザクションを開始する前に、元のトランザクションをコミットまたはロールバックする必要があります。例:
START TRANSACTION
SELECT ...
UPDATE ...
-- Now we run method with PROPAGATION_REQUIRES_NEW
-- How do we "suspend" transaction so we can start new one?
START TRANSACTION
UPDATE ...
COMMIT
-- We returned from the method, result was commited
-- Now we'd like to "unsuspend" the original transaction so it can be commited/rollbacked, but how?
またはこれはおそらく別の接続(セッションオブジェクト)を使用して実装されていますか?そこで、元の接続の使用をやめ、新しいトランザクションを開始できる新しいトランザクションを作成します。
私はここで誰もが(少なくともない春のドキュメント、アクション春、Hibernateで春の永続性で)それを説明するために気にしないように何かを明らかに不足しています。
ありがとうございます!
実際には、ネストされた例外がトランザクションを中断するのに適していないという印象を受けました。応答してくれてありがとう、それは今私にとってもっとはっきりしている。 – qbd