【发布时间】:2018-11-06 16:26:36
【问题描述】:
我有一个简单的问题。我必须编写一个面向 Tasklet 的 Spring Batch 项目,该项目必须从数据库中检索一些数据,处理信息。并将其写入 .json 文件。我正在使用 Spring Data JPA,但这是正确和最安全的方法吗? 如果没有,最好的编码方式是什么? 非常感谢您的帮助!
最新的Tasklet阅读器代码:
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;
}
}
【问题讨论】:
标签: spring spring-data-jpa spring-batch