galera, queria saber como o VRaptor trata as transações do hibernate, é usando aop?
Como VRaptor trata transações do hibernate
3 Respostas
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();
}
}
}
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
opaa, valeu cara, vou baixar o fonte do vraptor pra analisar melhor 