Как JdbcBatchItemWriter определяет размер пакета?
Я просматривал документацию JdbcBatchItemWriter, но заметил, что нет способа указать размер пакета для использования дляjdbcTemplate
используется этим классом. Я думал, что класс с именемBatch
в нем будет какой-то механизм для указания размера пакета, но похоже, что это не так. Теперь у меня есть следующие вопросы относительно определения размера партии:
- Эквивалентен ли размер пакета интервалу фиксации?
- Если нет, рассчитывается ли размер пакета автоматически?
И последнее, но не менее важное: есть ли способ явно указать размер пакета, который будет использоватьсяjdbcTemplate
в JdbcBatchItemWriter
при определении bean-компонента для JdbcBatchItemWriter
учебный класс?
1 ответ
Фиксация (или размер пакета) будет включать все элементы в чанке, что регулируется commit-interval
. Таким образом, для всех намерений и целей вы можете рассматривать интервал фиксации как размер пакета.
Одно предостережение к приведенному выше утверждению: ваш последний кусок может содержать меньше элементов, чем ваш интервал фиксации. Кроме того, если вы фильтруете какие-либо записи с помощью ItemProcessor, количество элементов, переданных вашему Writer, будет меньше, чем ваш интервал фиксации. Наконец, есть еще несколько кастомныхCompletionPolicy
сценарии, которые могут привести к фиксации с большим (или меньшим) количеством элементов, чем ваш интервал фиксации.
Надеюсь, это поможет!