У меня есть таблица DB2 с 150 записями. У меня есть другая таблица SQL Server с такими же столбцами. Один из столбцов таблицы - назовем это кодом - является уникальным значением и индексируется. Я использую Spring Batch. Периодически я получаю файл со списком кодов. Например, файл с 5 К кодами. Для каждого кода в файле мне нужно прочитать записи из таблицы DB2, столбец кода которой соответствует коду в файле, и вставить несколько столбцов из этих записей в таблицу SQL Server. Я хочу использовать SQL, а не JPA и считаю, что существует ограничение (скажем, 1000) на то, сколько значений может быть в предложении SQL IN. Это мой размер куска?
Как должно быть разработано приложение Spring Batch для этого? Я рассмотрел следующие стратегии, но мне нужна помощь, чтобы решить, какая из них (или любая другая) лучше.
1) Одношаговое задание с читателем, читающим коды из файла, процессор, использующий JdbcTemplate для получения строк для фрагмента кодов, и писатель, записывающий строки с использованием JdbcBatchItemWriter - похоже, что JdbcTemplate будет иметь открытое соединение с БД в ходе выполнения задания.
2) JdbcPagingItemReader - документация Spring Batch предупреждает, что базы данных, такие как DB2, имеют стратегии пессимистичной блокировки, и предлагает вместо этого использовать управляющий запрос
3) Driving Query - есть ли пример? - Как процессор преобразует ключ в полный объект здесь? Как долго соединение остается открытым?
4) Сцепление читателей - возможно ли это? - первый читатель будет читать из файла, второй из DB2, а затем процессор и пишущий.