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?