7

現在、自動コミット モードで Oracle データベースへのデータベース接続を共有する 2 つのオブジェクトがあります。しかし、今では両方のオブジェクトが独自のトランザクションを開始して、作業を完了する必要があります。

結果は何ですか?

同時トランザクションを行うために、各オブジェクトに独自の接続を与える必要がありますか?それとも、コードをそのままにして、2 つの同時トランザクションに同じ接続を使用することは可能ですか?

また、オブジェクトが 2 つではなく 10000 個ある場合のベスト プラクティスは何ですか? すべてのオブジェクトがトランザクションを開始できる場合、必要なデータベース接続の数。10000 のデータベース接続が必要ですか?

4

1 に答える 1

12

1 つの接続で 2 つのトランザクションを持つことはできません。Connection の潜在的なスレッド化の問題を除けば、commit()メソッドは 1 つしかなく、最後のコミット/ロールバック以降のすべてのアクティビティを、それらがどのオブジェクトから来たかに関係なくコミットします。

2 つのトランザクションが必要な場合は、2 つの接続を使用します。

何千ものオブジェクトがある場合は、接続プールを使用して、データベースへのアクティブな接続の数を合理化します。

于 2013-09-18T16:23:10.737 に答える