Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvidas/Observacao sobre no metodo de update

Ola, Estava percebendo que nos metodos (Aprovar e Reprovar) no service, nao esta chamando o metodo update do Spring. Normalmente o Spring Data JPA retorna um proxy da entidade que está anexado ao contexto de persistência ativo, mas neste caso ele finaliza logo depois de executar o getReferenceById .

Exemplo:

 public void aprovar(AprovacaoAdocaoDto dto) {
 
    Adocao adocao = repository.getReferenceById(dto.idAdocao());
    adocao.marcarComoAprovada();
    
}

Neste caso não seria necesario colocar a anotação @Transactional acima do metodo ?

@Transactional
 public void aprovar(AprovacaoAdocaoDto dto) {
 
    Adocao adocao = repository.getReferenceById(dto.idAdocao());
    adocao.marcarComoAprovada();
    
}
2 respostas

Olá, Bruno! Tudo certo?

Quando você utiliza o método getReferenceById, o Spring Data JPA retorna um proxy da entidade que está associado ao contexto de persistência. No entanto, para que as alterações feitas na entidade sejam automaticamente sincronizadas com o banco de dados, é necessário que o método esteja dentro de um contexto transacional.

Ao adicionar a anotação @Transactional ao método aprovar, você garante que todas as operações realizadas dentro deste método, incluindo a chamada adocao.marcarComoAprovada(), sejam executadas dentro de uma transação. Isso significa que, ao final do método, o contexto de persistência será automaticamente sincronizado com o banco de dados, persistindo as alterações feitas na entidade Adocao.

Aqui está como o método ficaria com a anotação @Transactional:

@Transactional
public void aprovar(AprovacaoAdocaoDto dto) {
    Adocao adocao = repository.getReferenceById(dto.idAdocao());
    adocao.marcarComoAprovada();
}

Esse é um exemplo clássico de como o uso de transações pode simplificar o gerenciamento de persistência no Spring, garantindo que todas as operações sejam concluídas com sucesso ou revertidas em caso de falhas.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.
solução!

Sim , minha observação era exatamente essa, ao assistir a aula vi que estava faltando e resolvi comentar aqui.

no caso colocar com a anotacão.