Spring Batch: сравнение данных между базами данных - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть две базы данных, Oracle и MySQL.Цель - сохранить значение из таблицы в Oracle в MySQL, с требованием: данные не существуют в таблице MySQL.

Но у меня возникли проблемы с пониманием Spring Batch.На шаге он содержит itemReader, itemProcessor и itemWriter.Если мое понимание верно, у шага может быть только один itemReader (cmiiw)

Мой план состоит в том, чтобы сделать 2 шага:

Шаг 1. Список из таблицы MySQL

Шаг2. Сравните T из Oracle с List (шаг 1), используя первичный ключ, например: id.

Если подход правильный, мой вопрос: как создать List на шаге?и как передать это в шаг 2?

Мне любезно нужно руководство в этом, спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

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

public class MyItemReader implements ItemReader<MyDTO> {

    @Override
    public MyDTO read() throws Exception {
        MyDTO myDto = null;

        /*
        your custom code 

        */

        return myDto;
    }
}

Но лучший подход в соответствии со структурой пакета Sprig будет

enter image description here

Таким образом, вы можете обрабатывать свою логику в процессоре, в процессоре вы можете сравнивать данные с oracle,

Шаг 1. Список из таблицы MySQL - будет обрабатываться в весеннем пакетном ридере

Шаг 2. Сравните T из Oracle со списком (шаг 1), используя первичный ключ ex: id.- будет обработан в процессоре

для увеличения производительности, я бы посоветовал вам использовать некоторый кеш, если данные оракула не слишком велики.Если данные oracle велики, вы можете просто найти данные на базе Oracle в вашем процессоре

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...