Percebi que no método atualizar dos tópicos faz a consulta duas vezes do tópico.
Fiz assim para melhorar o código:
@PutMapping("/{id}")
@Transactional
public ResponseEntity<TopicoDto> atualizar(@PathVariable Long id, @RequestBody @Valid AtualizacaoTopicoForm form) {
Optional<Topico> optionalTopico = topicoRepository.findById(id);
if (optionalTopico.isPresent()) {
Topico topico = form.atualizar(optionalTopico.get());
return ResponseEntity.ok(new TopicoDto(topico));
}
return ResponseEntity.notFound().build();
}
Método Atualizar:
public Topico atualizar(Topico topico) {
topico.setTitulo(this.titulo);
topico.setMensagem(this.mensagem);
return topico;
}
O código do método atualizar fica mais simples e objetivo, além de evitar dois SELECTs no banco.