Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Dúvida sobre o @Transactional e o repository.save()

Quando temos um objeto recuperado do BD com uma consulta via repository e utilizamos o @Transactional no método não precisamos chamar o repository.save() em nenhum caso?

O @Transactional neste caso é obrigatório para não necessitarmos chamar o repository.save()?

1 resposta
solução!

Olá Lorenzo!

O uso da anotação @Transactional em um método de serviço em Java, especialmente quando se está trabalhando com JPA/Hibernate, permite que todas as operações realizadas dentro do método sejam tratadas como uma única transação. Isso significa que, se alguma operação falhar, todas as alterações feitas no banco de dados dentro dessa transação serão revertidas.

Quando você recupera um objeto do banco de dados usando um repositório e faz alterações nesse objeto dentro de um método anotado com @Transactional, o JPA automaticamente detecta essas mudanças e sincroniza o estado do objeto com o banco de dados ao final da transação. Portanto, você não precisa explicitamente chamar repository.save() para persistir essas alterações, pois o JPA faz isso automaticamente.

No entanto, é importante lembrar que o @Transactional não é "obrigatório" para que o repository.save() não seja necessário, mas sim uma prática comum para garantir que as operações de banco de dados sejam atômicas e consistentes. Sem @Transactional, você precisaria chamar repository.save() explicitamente para garantir que as alterações sejam persistidas.

Espero ter ajudado e bons estudos!