Spring Batch для передачи данных в Tasklet из Reader и выполнения вызовов БД?

Я работаю на Spring Batch and Spring Boot v2.2.6.RELEASEЗаявка. В этом приложении я читаю данные изOracle БД, и теперь, исходя из полученных данных, мне нужно позвонить в Postgres system (две разные таблицы), получить данные и сохранить их в системе Couchbase.

Единственная проблема, на которую я хочу обратить внимание, это то, что есть способ, если мы можем

1) Прочитать все данные и перейти к Tasklet

2) В Tasklet сделать один вызов БД, передать список userId в SQL WHERE пункт и получите все необходимое txId.

3) Также в Tasklet сам вызовите другую таблицу, передайте список txId в SQL WHERE пункт и получите все необходимое ScoreCode

Это позволит избежать многократных вызовов БД от процессора, просто получая данные один за другим и не требуя снижения производительности.

Мой образец процессора для справки.

public class SourceBatchProcessor implements ItemProcessor<SourceDTO, TargetDTO>{

    @Autowired 
    private BatchDAO batchDAO;

    ModelMapper modelMapper = new ModelMapper();

    @Override
    public TargetDTO process(SourceDTO sourceDTO) throws Exception {
        TargetDTO targetDTO = modelMapper.map(sourceDTO, new TypeToken<TargetDTO>() {}.getType());

        String txId = batchDAO.getTransactionId(sourceDTO.getTxId);
        String countryCode = batchDAO.getScoreCode(txId);

        targetDTO.setCREATOR(Constants.SPRING_BATCH);
        targetDTO.setUPDATED_BY(Constants.SPRING_BATCH);
        targetDTO.setCREATE_DATE(String.valueOf(Instant.now()));
        targetDTO.setLAST_UPDATE_DATE(String.valueOf(Instant.now()));
        targetDTO.setSCORE_CD(countryCode); 
        return targetDTO;   
    }
}

0 ответов

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