Como faço para criar uma tratamento de erro para impedir registros duplicados
Como faço para criar uma tratamento de erro para impedir registros duplicados
Olá! Para tratar registros duplicados em sua API Spring Boot, você pode utilizar algumas abordagens. Uma maneira comum é verificar se o registro já existe antes de tentar salvá-lo no banco de dados. Aqui está um exemplo de como você pode fazer isso:
Verifique a Existência do Registro: Antes de salvar o novo registro, verifique se um registro com os mesmos dados já existe. Você pode fazer isso utilizando um repositório para consultar o banco de dados.
Lance uma Exceção Personalizada: Se o registro já existir, você pode lançar uma exceção personalizada. Em seguida, capture essa exceção para retornar uma resposta adequada ao cliente.
Aqui está um exemplo simplificado de como você poderia implementar isso:
@Service
public class MedicoService {
@Autowired
private MedicoRepository medicoRepository;
public Medico cadastrarMedico(Medico medico) {
if (medicoRepository.existsByEmail(medico.getEmail())) {
throw new RegistroDuplicadoException("Médico com este e-mail já está cadastrado.");
}
return medicoRepository.save(medico);
}
}
@RestControllerAdvice
public class TratadorDeErros {
@ExceptionHandler(RegistroDuplicadoException.class)
public ResponseEntity<String> tratarErroRegistroDuplicado(RegistroDuplicadoException ex) {
return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
}
}
public interface MedicoRepository extends JpaRepository<Medico, Long> {
boolean existsByEmail(String email);
}
Com essa abordagem, ao tentar cadastrar um médico com um e-mail já existente, a aplicação lançará uma exceção RegistroDuplicadoException
, que será capturada pelo TratadorDeErros
e retornará um código de status 409 Conflict
com uma mensagem explicativa.
Espero ter ajudado e bons estudos!