Bom dia senhores, estou fazendo um projeto com o VRaptor aqui e atualmente tenho feito o controle de transações no Dao, por exemplo:
public void save(T t) {
Transaction tx = this.session.beginTransaction();
this.session.save(t);
tx.commit();
}
public void update(T t) {
Transaction tx = this.session.beginTransaction();
this.session.update(t);
tx.commit();
}
public void delete(T t) {
Transaction tx = this.session.beginTransaction();
this.session.delete(t);
tx.commit();
}
Até o momento tem funcionado tudo muito bem, mas agora que estou precisando salvar um relacionamento 1-N (1 pedido tem muitos items), acho que essa abordagem não vai mais servir.
Preciso que a criação do pedido e a adição dos items para este pedido sejam feitas na mesma transação, algo que tenha esse efeito:
@Override
public void save(Order order) {
Transaction tx = this.getSession().beginTransaction();
this.getSession().save(order);
this.refresh(order);
for (ItemOrder cartItem : cart.getCartItems()) {
cartItem.setOrder(order);
this.itemOrderDao.getSession().save(cartItem);
}
tx.commit();
this.cart.clearCart();
}
Porém não me parece ser uma boa abordagem pra resolver o problema, então fica minha pergunta pros mais experientes, como seria uma implementação bem feita para o controle de transações usando o VRaptor? Alguem tem alguma sugestão? Parece que da pra usar o controle do Spring, mas no projeto mydvds do vraptor parece que não estão usando.
Grato!
