アプリケーションの往復を減らしてパフォーマンスを向上させることを検討しています。多くのメリットのためにPreparedStatement
を使用したいと思います。SQL:バウンド変数を使用したバッチ処理
これは私が省か詳細を一般化...を作ってみたものの一例..です
Class.forName("..Driver");
Connection connection = DriverManager.getConnection(..);
PreparedStatement statement = connection.prepareStatement("UPDATE Table SET XmlData = ? WHERE SomeGUID = ?; INSERT INTO SomeTable (Col1,Col2) VALUES (?, ?)");
try{
statement.setString(1, "<XmlData></XmlData>");
statement.setString(2, "32ABD5-438B0-..");
statement.setString(3, "ABC");
statement.setString(4, "XYZ");
statement.execute();
connection.commit();
}
catch {
connection.rollback();
}
finally {
statement.close();
connection.close();
}
(繰り返しますが、これは実際のコード、ちょうど簡単な例ではありません)
一般に、私はラウンドトリップトラフィックを減らすために、1つのステートメントで複数の挿入/更新ステートメントを実行しようとしています。これを行うには効果的な方法ですか、それともより受け入れられるアプローチがありますか?
1回のトランザクションで何千もの文がある可能性があります。私はおそらく単一のステートメントの実行でタイムアウトを防ぐために、ステートメントを合理的なサイズのブロックに分割するでしょう。
私は複数のDBベンダーをサポートしていますが、ANSI SQLを使用しているので、問題はないはずです。必要なら私はDALのインテリジェンスを活用することができます。したがって、これは問題ではありません。
ヒント/ご提案はありますか?