База данных является одним из многих источников данных для пакетных заданий, поэтому в спецификации пакета не будут прописаны требования, специфичные для подключения к базе данных.Ответ на ваш вопрос во многом зависит от того, как вы реализуете свою программу чтения элементов jdbc и программу записи элементов jdbc.
Как правило, соединения с базами данных являются дефицитным и дорогостоящим ресурсом и, следовательно, являются общими ресурсами.Вы не хотите, чтобы какая-либо часть вашего приложения удерживала соединения в течение длительного периода времени.Таким образом, типичным шаблоном является получение соединения с базой данных по требованию и немедленное его освобождение (закрытие).
Теперь рассмотрим жизненный цикл устройства чтения элементов jdbc и модуля записи элементов jdbc.Они относятся к выполнению шага, и поэтому их жизнь будет охватывать весь шаг выполнения.Не рекомендуется удерживать соединение в течение такого длительного периода времени, особенно для соединения, используемого в модуле записи элементов jdbc для обновления записей в базе данных.Например, при реализации JdbcItemWriter мы решили получать соединение по требованию, когда оно готово к записи фрагмента данных, и освобождать соединение сразу после использования (т. Е. Не в методах open
или close
).В этом случае нет необходимости держать соединение открытым между кусками.
Для JdbcItemReader мы решили открыть соединение в методе чтения элементов open
и закрыть его в close
метод.Это потому, что наша реализация основана на действующем jdbc ResultSet
, из которого можно непрерывно получать данные.Конечно, другие реализации могут выбрать кеширование или отключение данных и, таким образом, не полагаться на действующий ResultSet
, а вместо этого использовать шаблон по требованию для лучшего использования ресурсов.