Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Transações

Fiquei na dúvida sobre o funcionamento do spring com transações. Se, por exemplo, eu tivesse de fazer uma transação e necessitasse que ela fosse atômica (tudo ou nada) manipulando várias entidades em vários services/repositories diferentes orquestrados por um service, como isso seria feito?

3 respostas

Bom dia Sérgio, não sou o instrutor do curso mas vou tentar ajuda-lo.

Pode tentar a seguinte forma: Criando método no controller que faz essas operações e anota-lo com @Transaction do Spring, pois essa annotation diz ao método que o spring que irá controlar as transações pra você.

Oi Guilherme. Obrigado pela resposta. Agora suponha que você tenha o seguinte contexto hipotético: existem as entidades Pessoa, Aluno e Matricula. Em alguns momentos você irá manipular (incluir, alterar, excluir) pessoas e alunos individualmente, então suponho que haverá um serviço para cada um com métodos anotados como @Transacition. Mas também haverá situaçoes em que você fará uma matrícula, que também terá um serviço específico (também anotado com @Transaction), mas que consome os serviços de Pessoa e Aluno, por exemplo. Isso é transparente para o Spring? Ele entende que todos estão aninhados e fazem parte de uma transação única?

solução

Olá Sergio, sim, tudo que estiver no contexto do metodo anotado com @Transaction fará parte de uma transação única, vc também pode anotar com @Transaction a propria classe, daí todos os metodos da classe estarão no contexto da transação.