9

接続と春の取引に関するいくつかの質問があります。

  1. DML および DDL 操作を実行する複数のメソッドがトランザクションで実行される場合、Spring は同じ接続インスタンスを使用しますか (伝播レベルが必要です)? 同じ接続を維持することを読みましたが、技術的にそれを行う理由と方法がわかりませんか? Spring のソース コードでヒントが提供されているかどうかを説明している間、それは役に立ちます。

  2. 分離レベルとして Serializable を使用する場合、Spring Declarative Transactions を使用すると、Spring は、そのメソッドまたは元のトランザクション メソッドから呼び出される他のメソッドでデータベース操作を実行している間、常に 1 つの接続が使用されるようにしますか?

このトピックを考慮して、Spring Transactions を使用する際に留意すべき点はありますか?

このトピックに関するご意見/ヘルプをいただければ幸いです。ありがとう。

更新 1 - 申し訳ありませんが、分離レベルの代わりにシリアライズ可能な伝播レベルを書いてしまいました。修正しました。

4

1 に答える 1

7
  1. Springトランザクション管理は、JDBC接続などのさまざまなトランザクションリソースへの統合されたインターフェイスにすぎません。ほとんどのトランザクションリソースでは、複数の接続にまたがるトランザクションを持つことは意味がないため、これらのリソースのSpring管理トランザクションのすべての操作は同じ接続で実行されます。もちろん、で分散トランザクションを使用する場合、分散トランザクションにJtaTransactionManager関係する各トランザクションリソースには独自の接続があります。

  2. トランザクション分離レベルは、Springトランザクション管理とは何の関係もありません。それらの意味はデータベース理論で定義されています。また、トランザクションの伝播とは関係ありません。

ConnectionSpringは、を使用してスレッドローカル状態の一部として接続(JDBCなど)をストローすることにより、この動作を実装しますTransactionSynchronizationManager。たとえば、を参照してくださいDataSourceUtils

于 2011-05-17T15:00:37.157 に答える