Hibernate e transações EJB

2 respostas
C

Salvem,

Existe alguma maneira de uma sessão Hibernate participar de uma transação inicializada por um Stateful Session Bean  com CMT , ou seja , integrá-la ao JTA ?

2 Respostas

urubatan

configure as seguintes propriedades como descrito no manual do hibernate que funciona sim:

hibernate.connection.datasource = java:/comp/env/jdbc/MyDB hibernate.transaction.factory_class = net.sf.hibernate.transaction.JTATransactionFactory hibernate.transaction.manager_lookup_class = net.sf.hibernate.transaction.JBossTransactionManagerLookup

C

Veja este exemplo :

public void metodoDeNegocio(){ // em EJB A
                  // abre sessão Hibernate
                  // chama metodo helper() em EJB B
                  // atualiza objetos
                  // fecha sessão 
            }
 
            public void helper(){ // em EJB B
                  // abre sessão Hibernate
                  // atualiza objetos
                  // fecha sessão
            }
Com a configuração que vc citou, caso aconteça algum problema em 'helper'as 2 sessões abertas sofreriam rollback ? Considere que o método 'metodoDeNegocio' em EJB A tem o atributo de TX RequiresNew , ou seja , ele inicializa a transação JTA, e que 'helper' em EJB B tem TX Supports. E em caso de sucesso ambas as sessões seriam commitadas, ou seja, o comportamento passaria a ser IDENTICO a um EJB com CMT , com propagação da TX normalmente de acordo com os atributos TX dos EJBs ?

Obrigado pela ajuda.

Criado 22 de setembro de 2004
Ultima resposta 22 de set. de 2004
Respostas 2
Participantes 2