Пакетная обработка позволяет группировать связанные операторы SQL в пакет и отправлять их одним вызовом в базу данных.
Когда вы отправляете несколько операторов SQL в базу данных одновременно, вы сокращаете объем коммуникационных накладных расходов, тем самым повышая производительность.
-
Драйверы JDBC не обязаны поддерживать эту функцию. Вы должны использовать метод DatabaseMetaData.supportsBatchUpdates (), чтобы определить, поддерживает ли целевая база данных обработку пакетного обновления. Метод возвращает true, если ваш драйвер JDBC поддерживает эту функцию.
-
Метод addBatch () операторов Statement, PreparedStatement и CallableStatement используется для добавления отдельных операторов в пакет. ExecuteBatch () используется для запуска выполнения всех операторов, сгруппированных вместе.
-
ExecuteBatch () возвращает массив целых чисел, и каждый элемент массива представляет счетчик обновлений для соответствующего оператора обновления.
-
Так же, как вы можете добавить операторы в пакет для обработки, вы можете удалить их с помощью метода clearBatch () . Этот метод удаляет все операторы, которые вы добавили с помощью метода addBatch (). Тем не менее, вы не можете выборочно выбрать, какой оператор удалить.
Драйверы JDBC не обязаны поддерживать эту функцию. Вы должны использовать метод DatabaseMetaData.supportsBatchUpdates (), чтобы определить, поддерживает ли целевая база данных обработку пакетного обновления. Метод возвращает true, если ваш драйвер JDBC поддерживает эту функцию.
Метод addBatch () операторов Statement, PreparedStatement и CallableStatement используется для добавления отдельных операторов в пакет. ExecuteBatch () используется для запуска выполнения всех операторов, сгруппированных вместе.
ExecuteBatch () возвращает массив целых чисел, и каждый элемент массива представляет счетчик обновлений для соответствующего оператора обновления.
Так же, как вы можете добавить операторы в пакет для обработки, вы можете удалить их с помощью метода clearBatch () . Этот метод удаляет все операторы, которые вы добавили с помощью метода addBatch (). Тем не менее, вы не можете выборочно выбрать, какой оператор удалить.
Пакетирование с объектом выписки
Вот типичная последовательность шагов для использования пакетной обработки с объектом выписки:
-
Создайте объект Statement с использованием любого метода createStatement () .
-
Установите auto-commit в false, используя setAutoCommit () .
-
Добавьте столько команд SQL, сколько вам нужно, в пакет, используя метод addBatch () для созданного объекта оператора.
-
Выполните все операторы SQL, используя метод executeBatch () для созданного объекта оператора.
-
Наконец, зафиксируйте все изменения, используя метод commit () .
Создайте объект Statement с использованием любого метода createStatement () .
Установите auto-commit в false, используя setAutoCommit () .
Добавьте столько команд SQL, сколько вам нужно, в пакет, используя метод addBatch () для созданного объекта оператора.
Выполните все операторы SQL, используя метод executeBatch () для созданного объекта оператора.
Наконец, зафиксируйте все изменения, используя метод commit () .
пример
В следующем фрагменте кода приведен пример пакетного обновления с использованием объекта Statement —
// Create statement object Statement stmt = conn.createStatement(); // Set auto-commit to false conn.setAutoCommit(false); // Create SQL statement String SQL = "INSERT INTO Employees (id, first, last, age) " + "VALUES(200,'Zia', 'Ali', 30)"; // Add above SQL statement in the batch. stmt.addBatch(SQL); // Create one more SQL statement String SQL = "INSERT INTO Employees (id, first, last, age) " + "VALUES(201,'Raj', 'Kumar', 35)"; // Add above SQL statement in the batch. stmt.addBatch(SQL); // Create one more SQL statement String SQL = "UPDATE Employees SET age = 35 " + "WHERE id = 100"; // Add above SQL statement in the batch. stmt.addBatch(SQL); // Create an int[] to hold returned values int[] count = stmt.executeBatch(); //Explicitly commit statements to apply changes conn.commit();
Для лучшего понимания давайте изучим Batching — Example Code .
Пакетирование с объектом PrepareStatement
Вот типичная последовательность шагов для использования пакетной обработки с объектом PrepareStatement —
-
Создайте операторы SQL с заполнителями.
-
Создайте объект PrepareStatement с помощью любого метода prepareStatement () .
-
Установите auto-commit в false, используя setAutoCommit () .
-
Добавьте столько команд SQL, сколько вам нужно, в пакет, используя метод addBatch () для созданного объекта оператора.
-
Выполните все операторы SQL, используя метод executeBatch () для созданного объекта оператора.
-
Наконец, зафиксируйте все изменения, используя метод commit () .
Создайте операторы SQL с заполнителями.
Создайте объект PrepareStatement с помощью любого метода prepareStatement () .
Установите auto-commit в false, используя setAutoCommit () .
Добавьте столько команд SQL, сколько вам нужно, в пакет, используя метод addBatch () для созданного объекта оператора.
Выполните все операторы SQL, используя метод executeBatch () для созданного объекта оператора.
Наконец, зафиксируйте все изменения, используя метод commit () .
В следующем фрагменте кода приведен пример пакетного обновления с использованием объекта PrepareStatement.
// Create SQL statement String SQL = "INSERT INTO Employees (id, first, last, age) " + "VALUES(?, ?, ?, ?)"; // Create PrepareStatement object PreparedStatemen pstmt = conn.prepareStatement(SQL); //Set auto-commit to false conn.setAutoCommit(false); // Set the variables pstmt.setInt( 1, 400 ); pstmt.setString( 2, "Pappu" ); pstmt.setString( 3, "Singh" ); pstmt.setInt( 4, 33 ); // Add it to the batch pstmt.addBatch(); // Set the variables pstmt.setInt( 1, 401 ); pstmt.setString( 2, "Pawan" ); pstmt.setString( 3, "Singh" ); pstmt.setInt( 4, 31 ); // Add it to the batch pstmt.addBatch(); //add more batches . . . . //Create an int[] to hold returned values int[] count = stmt.executeBatch(); //Explicitly commit statements to apply changes conn.commit();
Для лучшего понимания давайте изучим Batching — Example Code .