English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
バッチ処理は、関連するSQL文を一つのバッチにまとめ、データベースへの一度の呼び出しで提出することができます。
一度に複数のSQL文をデータベースに送信すると、通信コストを削減し、パフォーマンスを向上させることができます。
JDBCドライバーはこの機能をサポートする必要はありません。バッチ更新処理をサポートするかどうかを確認するには、DatabaseMetaData.supportsBatchUpdates()メソッドを使用します。JDBCドライバーがこの機能をサポートしている場合、このメソッドはtrueを返します。
Statement、PreparedStatement、CallableStatementのaddBatch()メソッドは、バッチに単一の文書を追加するために使用されます。executeBatch()は、組み合わせてすべての文書を実行するために使用されます。
executeBatch()は整数の配列を返し、配列の各要素は対応するupdate文の更新カウントを示します。
批処理に文書を追加して処理するように、clearBatch()メソッドを使用してそれらを削除することもできます。このメソッドは、addBatch()メソッドに追加されたすべての文書を削除しますが、削除する文書を選択することはできません。
これは、批処理とStatementオブジェクトを一緒に使用する典型的な手順シーケンスです-
これらの2つを使用してcreateStatement()メソッドを使用して Statement オブジェクトを作成します。
setAutoCommit()を使用して auto-commit が false に設定されています。
作成した文書オブジェクトにaddBatch()メソッドを使用して、任意の数のSQL文をバッチに追加します。
executeBatch()メソッドを使用して、作成したステートメントオブジェクトに対してすべてのSQL文を実行します。
最後に、commit()すべての変更をコミットする方法です。
以下のコードセグメントは、Statementオブジェクトを使用してバッチ更新を行う例を提供します-
// 文書オブジェクトを作成します Statement stmt = conn.createStatement(); // 自動コミットをfalseに設定します conn.setAutoCommit(false); // SQL文を作成します String SQL = "INSERT INTO Employees (id, first, last, age) "; + "VALUES(200,'Zia', 'Ali', 30)"; // 上記のSQL文を批処理に追加します。 stmt.addBatch(SQL); // もう一つのSQL文を作成します String SQL = "INSERT INTO Employees (id, first, last, age) "; + "VALUES(201,'Raj', 'Kumar', 35)"; // 上記のSQL文を批処理に追加します。 stmt.addBatch(SQL); // もう一つのSQL文を作成します String SQL = "UPDATE Employees SET age = 35 " + "WHERE id = 100"; // 上記のSQL文を批処理に追加します。 stmt.addBatch(SQL); // 返される値を保存するためのint[]を作成します int[] count = stmt.executeBatch(); //変更を適用するために明確なコミット文を指定します conn.commit();
よりよく理解するために、以下を研究しましょうバッチ処理の例コード。
これは、批処理とPrepareStatementオブジェクトを一緒に使用する典型的な手順シーケンスです-
占位符を使用してSQL文を作成します。
どの PrepareStatement()メソッドを使用しても、PrepareStatementオブジェクトを作成します。
setAutoCommit()を使用して auto-commit が false に設定されています。
addBatch()メソッドを使用して、作成したステートメントオブジェクトにできるだけ多くのSQL文をバッチに追加します。
executeBatch()メソッドを使用して、作成したステートメントオブジェクトに対してすべてのSQL文を実行します。
最後に、commit()すべての変更をコミットする方法です。
以下のコードセグメントは、PrepareStatementオブジェクトを使用してバッチ更新を行う例を提供します-
// SQL文を作成します String SQL = "INSERT INTO Employees (id, first, last, age) "; + "VALUES(?, ?, ?, ?)"; // PrepareStatementオブジェクトを作成します PreparedStatemen pstmt = conn.prepareStatement(SQL); //自動コミットをfalseに設定します conn.setAutoCommit(false); // 変数を設定します pstmt.setInt( 1, 400); pstmt.setString( 2, "Pappu"); pstmt.setString( 3, "Singh"); pstmt.setInt( 4, 33 ); // それをバッチに追加します pstmt.addBatch(); // 変数を設定します pstmt.setInt( 1, 401 ); pstmt.setString( 2, "Pawan"); pstmt.setString( 3, "Singh"); pstmt.setInt( 4, 31 ); // それをバッチに追加します pstmt.addBatch(); //さらにバッチを追加します . . . . //返される値を保存するためのint[]を作成します int[] count = stmt.executeBatch(); //変更を適用するために明確なコミット文を指定します conn.commit();
よりよく理解するために、以下を研究しましょうバッチ処理の例コード。