У меня простой вопрос. Я должен кодировать ориентированный на Tasklet Spring Batch проект, который должен извлекать некоторые данные из БД, обрабатывать информацию. и запишите его в файл .json. Я использую Spring Data JPA, но это правильный и самый безопасный способ сделать это?
Если нет, то как лучше всего это закодировать?
Большое спасибо за помощь!
Последний код программы чтения тасклетов:
public class DataReader implements Tasklet, StepExecutionListener {
@Autowired
EntityRepository entityRepository;
@Autowired
ProductRepository productRepository;
@Autowired
SuscriptionRepository suscriptionRepository;
@Autowired
MapperUtils mapperUtils;
private List<EntityDTO> entityDataDTO;
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
this.entityDataDTO = new ArrayList<EntityDTO>();
List<Entidad> entities = entityRepository.findAll();
for (Entidad entity : entities) {
List<SuscriptionDTO> suscriptionsDTO = new ArrayList<SuscriptionDTO>();
for (Suscripcion suscription : entity.getSuscripciones()) {
List<Suscripcion> suscriptionsByProduct = suscriptionRepository.findSuscriptionsByEntityIdAndSuscriptionId(suscription.getId().getIdEntidadEurbt(), suscription.getId().getIdSuscripcion());
List<String> suscriptionProducts = new ArrayList<String>();
for (Suscripcion suscriptionProduct : suscriptionsByProduct) {
Producto product = productRepository.findById(suscriptionProduct.getId().getIdProductoEurbt()).get();
suscriptionProducts.add(product.getTlDescProducto());
}
SuscriptionDTO suscriptionDTO = mapperUtils.mapSuscriptionDataToSuscriptionDTO(suscription, suscriptionProducts);
if (!suscriptionsDTO.contains(suscriptionDTO))
suscriptionsDTO.add(suscriptionDTO);
}
this.entityDataDTO.add(mapperUtils.mapEntityDataToEntityDTO(entity, suscriptionsDTO));
}
return RepeatStatus.FINISHED;
}
@Override
public void beforeStep(StepExecution stepExecution) {
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
stepExecution.getJobExecution().getExecutionContext().put("entityDataDTO", this.entityDataDTO);
return ExitStatus.COMPLETED;
}
}