2015-04-21 2 views
0

Я читаю из базы данных и записываю в другую базу данных через Spring Batch. Мне нужны два менеджера транзакций? Я читаю строки «n» из первой базы данных, обрабатывая их, а затем записывая строки «m» во вторую базу данных. Я использую jdbc, но не JPA или Hibernate.Весенний пакетный менеджер транзакций для двух баз данных

+0

ключевые слова для поиска: XA, две фазы фиксации, распределенной транзакции. Вкратце, убедитесь, что у вас есть драйвер XA для обоих БД, и у вас есть правильный менеджер транзакций (обычно получайте из контейнера. Я помню, что есть некоторый менеджер контейнеров txn, но я не пробовал) –

ответ

1

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

По умолчанию курсор открывается с помощью отдельного соединения. ResultSet для курсора удерживается открытым независимо от того, совершает ли он или катит спины в соседних транзакциях. Клиентами этого читателя являются , ответственные за буферизацию элементов в случае, если они должны быть повторно представлены в откат. Эта буферизация обрабатывается на этапе реализованных реализаций и является лишь проблемой для тех, кто пишет свои собственные реализации шагов.

(Посмотрите на this question, тоже)

Смежные вопросы