Minha dúvida é em relação a requisição PUT do TopicosController
// atualiza a cache
@CacheEvict(value = "listaDeTopicos", allEntries = true)
// update
@PutMapping("/{id}")
// @Transactional avisa ao Spring para commitar a transação no final do método
@Transactional
// O método PUT sobrescreve o recurso inteiro(atualiza todas as infos)
// já o PACTH faz a atualização de alguns campos do recurso
public ResponseEntity<TopicoDTO> atualizar(@PathVariable Long id, @RequestBody @Valid AtualizacaoTopicoForm form) {
Optional<Topico> optional = topicoRepository.findById(id);
if (optional.isPresent()) {
Topico topico = form.atualizar(id, topicoRepository);
return ResponseEntity.ok(new TopicoDTO(topico));
}
return ResponseEntity.notFound().build();
}
Por que não está sendo usado o método topicoRepository.save(topico);
para salvar as alterações como foi na requisição POST?
Sei que é chamado o método atualizar()
do atualizacaotopicoForm
public Topico atualizar(Long id, TopicoRepository topicoRepository) {
Topico topico = topicoRepository.getOne(id);
topico.setTitulo(this.titulo);
topico.setMensagem(this.mensagem);
return topico;
}
Mas esse método também não possui o topicoRepository.save(topico);
Então como as infos estão sendo salvas no banco somente desse forma?