私の質問は非常に単純で、タイトルにあります。Google とスタック オーバーフローでは何も得られないので、質問する時が来たと考えました。
現在、ユーザーがサイトに登録するときの SQL クエリを作成中です。私は常に呼び出し可能ステートメントの余分なコーディングのために準備済みステートメントのみを使用してきましたが、通常のステートメントのパフォーマンスへの影響は両方ともオフになっています。ただし、このクエリにより、以前の 1 つのサイズがすべての (準備されたステートメント) に適合する方法に代わる可能性のある方法を考えさせられます。
このクエリには、データベースへの合計 4 回の往復があります。手順は次のとおりです。
- ユーザーをデータベースに挿入し、結果セット内で生成されたキー (ユーザー ID) を取得します。
- ユーザー ID を取得して、album テーブルに行を挿入します。生成されたキー (アルバム ID) を取得する
- アルバム ID を取得し、images テーブルに行を挿入します。生成されたキー (イメージ ID) を取得する
- イメージ ID を取得し、ユーザー テーブルの現在のデフォルト列をイメージ ID で更新します。
余談ですが、挿入後にキーを取り戻す方法に興味がある人は、Statement.RETURN_GENERATED_KEYS
これに関する素晴らしい記事をここで読むことができます - IBM Article
とにかく、4つのラウンドトリップ(ただしキャッシュ可能)の準備済みステートメントの使用が問題ないかどうか、またはバッチ化された(ただしキャッシュ可能ではない)ステートメントを使用する必要があるかどうかを知りたいですか?