Duvida em transação do ORM
30/12/2016 12:07
0
Galera bom dia!

Estou com uma duvida, que é a seguinte, imagina uma situação em que vc vai gravar uma venda, e precisa atualizar o estoque, e ainda gerar o financeiro, de forma que nenhuma dessas operações pode acontecer sem as outras, ou seja, vc tem que garantir que ou o sistema grava tudo, ou não grava nada. Sendo assim, utilizando o controle transacional do hibernate, vc tem a transação em cada método no DAO, mas eles estão totalmente desconectados, ou seja, vc vai chamar um método pra gravar a venda, outro pra atualizar o estoque, e outro pra gerar o financeiro. Aí imagina que dá um erro na atualização do estoque do terceiro produto, como vc vai desfazer a atualização do estoque dos 2 produtos anteriores, e tbm a venda que já foi gravada? E com o controle transacional do Spring, vc consegue criar um método em um service, por exemplo, e esse método terá uma anotação dizendo que ele é transacional, e tudo que ocorrer dentro desse método vai fazer parte de uma única transação, ou seja, vc pode executar todos os passos sem preocupação, pq se algo der errado, em qualquer etapa que seja, o Spring desfaz tudo, garantindo a integridade das informações...

Queria saber se com o Grails da pra fazer a mesma coisa que se faz com o Spring, fazendo com que automaticamente ele garante a integridade do banco?
Tags: Grails


0
Você pode ter o service de vendas que invoca o service de estoque, financeiro, etc.
Por padrão, quando você está no contexto de um método transacional e invoca um outro método que também é transacional, será utilizada a transação que já está aberta. Ou seja, se der rollback em algum momento vai desfazer tudo.

Isso utilizando a anotação @Transactional do Grails.

Se precisar de outros comportamentos, como por exemplo que a transação atual seja ignorada e uma nova aberta, tem que utilizar o @Transactional que permite este controle mais fino.


0
"Se precisar de outros comportamentos, como por exemplo que a transação atual seja ignorada e uma nova aberta, tem que utilizar o @Transactional do Spring, que permite este controle mais fino."



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto