Estoy creando una API Rest usando Spring Boot y estoy usando Hibernate Validation para validar entradas de solicitud.
Pero también necesito otros tipos de validación, por ejemplo, cuando los datos de actualización deben verificarse, si la identificación de la empresa no existe, quiero lanzar una excepción personalizada.
¿Debería esta validación ubicarse en la capa de servicio o en la capa de controlador?
Capa de servicio:
public Company update(Company entity) {
if (entity.getId() == null || repository.findOne(entity.getId()) == null) {
throw new ResourceNotFoundException("can not update un existence data with id : "
+ entity.getId());
}
return repository.saveAndFlush(entity);
}
Capa de controlador:
public HttpEntity<CompanyResource> update(@Valid @RequestBody Company companyRequest) {
Company company = companyService.getById(companyRequest.getId());
Precondition.checkDataFound(company,
"Can't not find data with id : " + companyRequest.getId());
// TODO : extract ignore properties to constant
BeanUtils.copyProperties(companyRequest, company, "createdBy", "createdDate",
"updatedBy", "updatedDate", "version", "markForDelete");
Company updatedCompany = companyService.update(company);
CompanyResource companyResource = companyAssembler.toResource(updatedCompany);
return new ResponseEntity<CompanyResource>(companyResource, HttpStatus.OK);
}