1
resposta

Atualização de dados.

Olá! Tudo bem? Na aula, usamos esse código:

    @PutMapping
    @Transactional
    public void atualizarAluno(@RequestBody @Valid DadosAtualizacaoAluno dados){
        Aluno aluno = repository.getReferenceById(dados.id());
        aluno.atualizarInformacoes(dados);
    }

Gostaria de saber mais por debaixo dos panos, como ele atualiza no banco de dados o aluno, sendo que em nenhum momento chamamos um método do objeto repository para atualização do aluno. Teriam como me explicar mais no detalhe o que acontece? Não encontrei uma explicação detalhada em outras fontes :/

Obrigado desde já!

1 resposta

Olá, Guilherme! Tudo bem sim, obrigado por perguntar.

No código que você postou, a atualização do aluno no banco de dados é realizada devido ao uso da anotação @Transactional. Essa anotação é responsável por gerenciar as transações no banco de dados, garantindo que todas as operações realizadas dentro do método marcado com essa anotação sejam executadas em uma única transação.

Dessa forma, quando o método atualizarAluno é chamado, o Spring Boot cria uma transação, que é finalizada quando o método é concluído. Durante essa transação, qualquer alteração realizada nos objetos gerenciados pelo Hibernate (que é o framework de persistência utilizado pelo Spring Boot) é automaticamente sincronizada com o banco de dados.

No caso do seu código, a atualização do aluno é realizada através do método atualizarInformacoes, que deve estar atualizando os atributos do objeto aluno. Como esse objeto é gerenciado pelo Hibernate, as alterações feitas em seus atributos são automaticamente sincronizadas com o banco de dados quando a transação é finalizada.

Espero ter ajudado a esclarecer suas dúvidas! Bons estudos!