Batch-операции
Когда одинаковых команд много
Если нужно обновить сотни строк, можно выполнить сотни отдельных JDBC-вызовов. Но часто выгоднее собрать несколько команд в batch и передать их драйверу одной группой. Это уменьшает количество отдельных взаимодействий между приложением и базой и может заметно ускорить массовые операции.
Batch с PreparedStatement
String sql = "INSERT INTO tags(name) VALUES (?)";
try (PreparedStatement statement = connection.prepareStatement(sql)) {
for (String tag : tags) {
statement.setString(1, tag);
statement.addBatch();
}
int[] counts = statement.executeBatch();
System.out.println(counts.length);
}
Каждый вызов addBatch() добавляет текущий набор параметров в очередь объекта.
executeBatch() отправляет накопленные команды на выполнение
и возвращает массив результатов обновления для элементов batch.
Batch не заменяет транзакцию
Групповая отправка команд и атомарность — разные задачи. Если серия изменений должна примениться целиком или не примениться вообще, batch обычно выполняют внутри явно управляемой транзакции.
Не собирай бесконечный batch.
Для очень больших объёмов данные обычно отправляют порциями: так проще контролировать память,
размер запроса и время одной операции.
Проверь себя
Разбор задания
Ментор знает решение и поможет тебе прийти к нему самостоятельно
Войди, чтобы использовать Ментора
Ментор учитывает текущую задачу и историю диалога.
Войти
Проверь важные нюансы и ответ после собственной попытки.
Войди, чтобы посмотреть решение
Решение и разбор доступны после авторизации.
Войти