0

私はインターネットを精査して正確な答えを求めましたが、あまり成功していません。これが私のシナリオです。

JDBC ユニバースでは、複数の「挿入」または複数の「更新」を 1 つのステートメントに追加し、それらをバッチとして実行するのが標準的な方法です。これらは同種のクエリであり、それらをバッチ処理することは完全に理にかなっています。すごい!

では、この場合を考えてみましょう。1 つのトランザクションは、1 つの「挿入」とそれに続く他の「挿入」で構成され、成功したと見なされます。例として、子のリスト [Child_M、Child_N、Child_O、...] を持つオブジェクト Parent_A があるとします。Parent_A を保存するには、子も正常に保存する必要があります。

別の少し異なる例として、ユーザー U と子アカウント A があります。ユーザー U はアカウント A がなくても存在できます。ただし、ユーザー U 用の新しいアカウント A を挿入する場合は、ユーザー U も次のように更新する必要があります。アカウント情報 (トランザクションになります)。

上記の 2 つのシナリオを考えると、次のことは可能ですか? 2) ユーザーのリストが与えられた場合、バッチ実行でアカウントを使用して各ユーザーを挿入および更新し、すべてを単一のトランザクションで実行できますか?

これがそれほど冗長でないことを願っています!!

4

1 に答える 1

0

これを行うには、 Statement でaddBatch(String)メソッドを使用します。

ただし、SQL 文字列全体を実際に自分で作成する必要があるため (PreparedStatements/bind 変数を使用しない)、各テーブル (つまり、親、子) に対して 1 つのバッチ実行を行い、すべてが成功した場合にのみコミットする方がおそらく簡単です。 .

于 2013-05-08T13:05:39.203 に答える