Что такое батчинг в Java и как его применяют?

«Что такое батчинг в Java и как его применяют?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Батчинг (Batch Processing) — это техника группировки нескольких операций в одну для повышения производительности, минимизируя накладные расходы на каждую операцию (например, сетевые вызовы или транзакции БД).

Основные области применения:

  • JDBC Batch Updates: Групповое выполнение SQL-запросов INSERT, UPDATE, DELETE.
  • JPA/Hibernate: Использование StatelessSession или EntityManager для пакетной вставки/обновления сущностей.
  • Обработка данных: Пакетное чтение, преобразование и запись больших объемов данных.

Пример JDBC батчинга:

String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
    for (User user : userList) {
        pstmt.setString(1, user.getName());
        pstmt.setString(2, user.getEmail());
        pstmt.addBatch(); // Добавляем запрос в пакет
    }
    int[] updateCounts = pstmt.executeBatch(); // Выполняем весь пакет
}

Почему это важно: Батчинг значительно ускоряет массовые операции, сокращая количество циклов обмена с базой данных. Для эффективности в Hibernate необходимо настроить параметры, например, hibernate.jdbc.batch_size.