Durante a aula, as instrutoras decidiram por fazer o método "obterPorId" da seguinte forma:
public SerieDTO obterPorId(Long id) {
Optional<Serie> serie = serieRepository.findById(id);
if (serie.isPresent()) {
Serie s = serie.get();
return new SerieDTO(s.getId(), s.getTitulo(), s.getTotalTemporadas(), s.getAvaliacao(), s.getGenero(), s.getAtores(), s.getPoster(), s.getSinopse());
}
return null;
}
Porém, como forma alternativa, decidi implementar da seguinte forma:
public SerieDTO obterSeriePeloId(Long id) {
Serie serie = serieRepository.findById(id).orElseThrow(() -> new RuntimeException("Serie nao encontrada."));
return new SerieDTO(serie);
}
No meu caso, o SerieDTO já possui um construtor que recebe um objeto Serie, achei que essa abordagem deixou o codigo mais limpo, alem de retornar uma Exception no lugar de Null. Gostaria de saber outras opiniões: Há alguma vantagem ou desvantagem que eu talvez não tenha considerado? Vale a pena usar orElseThrow ou em algum caso seria melhor retornar null?