JdbcBatchItemWriter многопоточность - PullRequest
0 голосов
/ 25 февраля 2020

Есть ли способ многопоточности JdbcBatchItemWriter. У меня есть пакет, который должен вставить много строк (+ 1M строк).

@Bean
public JdbcBatchItemWriter<MyDTO> InitWriter() {
    JdbcBatchItemWriter<MyDTO> writer = new JdbcBatchItemWriter<MyDTO>();
    writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<MyDTO>());
    writer.setSql("INSERT INTO ....");
    writer.setDataSource(cloudDataSource);

    return writer;
}

это заняло у меня навсегда.

1 Ответ

0 голосов
/ 26 февраля 2020

JdbcBatchItemWriter является поточно-ориентированным, поэтому вы можете использовать его в нескольких параллельных транзакциях. Вот выдержка из его Javado c:

Пишущий является потокобезопасным после того, как его свойства установлены (нормальное поведение синглтона), поэтому его можно использовать для записи в нескольких одновременных транзакциях.

Итак, в вашем случае вы можете попробовать использовать Многопоточный шаг и посмотреть, не улучшит ли это производительность вашей работы.

...