Являются ли методы open и close в itemreader и itemwriter подходящими местами для открытия и закрытия соединения с базой данных в пакетном задании java jsr-352?

Являются ли методы open и close в itemreader и itemwriter подходящими местами для открытия и закрытия соединения с базой данных в пакетном задании java jsr-352? Я не мог найти в спецификации, что при вызове этих двух методов, особенно в исключительных случаях

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
945
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

База данных является одним из многих источников данных для пакетных заданий, поэтому спецификация пакетной обработки не предписывает требований, специфичных для подключения к базе данных. Ответ на ваш вопрос во многом зависит от того, как вы реализуете свои программы чтения элементов jdbc и средства записи элементов jdbc.

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

Теперь посмотрим на жизненный цикл средств чтения элементов jdbc и средства записи элементов jdbc. Они принадлежат к пошаговому исполнению, поэтому их жизнь будет охватывать все пошаговое исполнение. Не рекомендуется удерживать соединение в течение такого длительного периода времени, особенно для соединения, используемого в jdbc item writer для обновления записей базы данных. Например, при реализации JdbcItemWriter мы выбрали получение соединения по запросу, когда оно было готово для записи блока данных и освобождения соединения сразу после использования (т.е. не в методах open или close). В этом случае нет необходимости поддерживать соединение между чанками.

Для JdbcItemReader мы решили открывать соединение в методе чтения элементов open и закрывать его в методе close. Это связано с тем, что наша реализация основана на живом jdbc ResultSet, из которого можно непрерывно получать данные. Конечно, другие реализации могут выбирать кэширование или отсоединение данных и, таким образом, не полагаться на живой ResultSet, а вместо этого использовать шаблон по запросу для лучшего использования ресурсов.

Гарантируется ли выполнение метода close даже при прерывании пакетного задания из-за необработанного исключения?

Ming 29.05.2018 05:32

Другие вопросы по теме