私はプリペアドステートメントを使用することが許可されていないレガシーコードを使用しています。 Spring JDBCと更新クエリを使用しています。要件は、100,000行を更新することです。 私は行番号と特定の列で更新する必要がある値を持つマップを持っています。ここでプリペアドステートメントを使用しないSpring JDBCバッチ更新クエリ
は私の現在のコードです:
for(String seq: recordIdMap.keySet()){
Object[] parameters = new Object[2];
parameters[0] = seq;
parameters[1] = recordIdMap.get(seq);
//<setting the params in query using manual string replace- earlier query has (1) (2) ... in query . This is not prepared statement>
getJdbcTemplate().update(query);
}
私はループの後、私は、単一のDBヒットでそれを実行できるように、バッチとして実行するために、これを変更する必要があります。
この要件にSpring JDBCバッチ更新を使用する最良の方法は何ですか?
を助け
希望はなぜあなたはプリペアドステートメントを使用することはできませんか? 100k個の個別の更新を実行することは、同じ準備済みの文を100k回実行するよりもはるかに遅くなります。また、100kのバッチサイズは多すぎるようです。合計を500/1000行のバッチに分割する方が良い考えです。 –
クエリは既に他の人によって書かれており、私はそれを更新するつもりはありません。 – amitmah