「準備済みSQL命令でデータベースアクセスを効率化する」で紹介した「準備済みSQL命令」(PreparedStatement)は、「パラメータだけが異なる同一のSQL命令を繰り返し実行する場合」に便利ですが、まったく異なる複数のSQL命令を実行したいというケースでは、効果的なパフォーマンスを望むことはできません。
「ストアドプロシージャでデータベースアクセスを効率化する」で紹介した「ストアドプロシージャ」(CallableStatement)は、「複雑なSQL命令を実行する場合」には便利ですが、MySQLのようにストアドプロシージャをサポートしていない一部のデータベースサーバ(現在開発中のMySQL 5.0ではサポート予定)では利用することができません。また、開発者はデータベースサーバごとにストアドプロシージャの構文を学習する必要があるため、敷居の高さも否定できません。
では、もう1つの便利なテクニックとして、SQL命令のバッチ実行(executeBatchメソッド)を紹介します。これは、準備済みSQL命令やストアドプロシージャとは異なり、SQL命令をあらかじめ解析・コンパイルしておくことでデータベースアクセスの効率化を図るというものではありません。複数のSQL命令を実行する際に命令を1つ1つ順番に実行していくのではなく、いったん命令を蓄積しておき、後でまとめて実行するというテクニックです。こうすることにより、単発的に命令を発行するのに比べ、処理前後のオーバヘッドを軽減することができるので、実行効率を向上することができます。
それでは、executeBatchメソッドを利用してbooksテーブルへのデータの登録・更新を行うサンプルプログラムを下記に示します。
package to.msn.wings; |
サンプルプログラムを見ればわかるとおり、バッチ処理のロジックは、大まかに以下の2つの段階から構成されています。
なお、addBatchメソッドによってバッチ処理リストに追加された一連のSQLコマンドは、clearBatchメソッドでクリアすることができます。
注意:サーブレットクラスの動作にはデプロイメント・ディスクリプタ(web.xml)への登録が必須です。web.xmlの設定については、連載:基礎から学ぶサーブレット/JSP「第11回 JSPとサーブレットの違いを明らかにする」を参照してください。
Copyright © ITmedia, Inc. All Rights Reserved.
Java Agile 鬯ッ�ョ�ス�ォ�ス�ス�ス�ェ鬮ッ蛹コ�サ繧托スス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�コ鬮」蛹�スス�オ髫エ竏オ�コ�キ�ス�ク�ス�キ�ス�ス�ス�ケ髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�ウ鬯ゥ蟷「�ス�「�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ュ鬯ゥ蟷「�ス�「髫エ雜」�ス�「�ス�ス�ス�ス�ス�ス�ス�ウ鬯ゥ蟷「�ス�「�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ー