Como VRaptor trata transações do hibernate

3 respostas
nathanpsouza

galera, queria saber como o VRaptor trata as transações do hibernate, é usando aop?

3 Respostas

G

Você pode analisar analisando os códigos do vraptor na classe br.com.caelum.vraptor.util.jpa.JPATransactionInterceptor.

Há também um outro tópico aqui no guj que discutimos bastante como funciona.

Trocando em miúdos há um interceptor requested-scope que faz um try and catch. Caso passar no try com sucesso faz commit, caso cair no catch faz rollback.

public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) { EntityTransaction transaction = null; try { transaction = manager.getTransaction(); transaction.begin(); stack.next(method, instance); transaction.commit(); } finally { if (transaction != null && transaction.isActive()) { transaction.rollback(); } } }

Lucas_Cavalcanti

se vc for pegar ao pé da letra, todo processo do VRaptor é AOP…

você quer executar MeuController.minhaLogica() e ele faz um monte de coisa antes e um monte de coisa depois…

o controle de transações é feito com um interceptor, como o garcia falou, que abre a transação antes da sua lógica e comita (ou dá rollback) depois

nathanpsouza

opaa, valeu cara, vou baixar o fonte do vraptor pra analisar melhor :smiley:

Criado 17 de março de 2010
Ultima resposta 17 de mar. de 2010
Respostas 3
Participantes 3