Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2010, 05:59
draco23800
 
Fecha de Ingreso: abril-2005
Mensajes: 171
Antigüedad: 19 años
Puntos: 0
[Hibernate]Insertar con transacionalidad "manual"

Buenas,

Tengo una aplicacion en hibernate donde me piden que utilice la implementacion de clases a la antigua usanza, es decir las operaciones sobre cada tabla con su DAO. Un ejemplo
Tabla A --> A.xml.hbm
A.java
ADAO(A,PobjSession).java
y dentro de ADAO.java método guardar donde se hace la llamada a save(A).

Bien estos métodos los he planteado pasando la sesion , de tal forma que si quiero inserar con transacionalidad llamando desde otra clase pues tenga ya creada la session y si es solo para insertar en esa tabla(pues se crea la sesion dentro del metodo y su propia transaccion). El método save del ADAO quedaria algo asi:

if (PobjSession == null){
objSessionFactory = objConfiguration.buildSessionFactory();
objSession = objSessionFactory.openSession();
Transaction objTransaction = objSession.beginTransaction();
objSession.save(A);
objTransaction.commit();
objSessionFactory.close();
objSession.close();
} else {
PobjSession.save(A);
}//if (PobjSession == null)

Entonces si tenemos otra clase igual B, C... Lo que yo quiero en en otro método DAO insertar en A,B,C por medio de sus DAO algo asi como esto:

objSessionFactory = objConfiguration.buildSessionFactory();
objSession = objSessionFactory.openSession();
Transaction objTransaction = objSession.beginTransaction();
ADAO(A,objSession);
BDAO(B,objSession);
CDAO(C,objSession);
objTransaction.commit();
objSessionFactory.close();
objSession.close();

Vale tras este rollo que supongo sera revatido,insisto me lo han impuesto, tengo el problema de que no me hace commit de los insert e incluso que solo me saca uno de ellos por consola.

¿Puede ser por la cahe de hibernate?

Entiendo que la transaccion estaria controlando los 3 save ¿no?

¿Como se podria hacer esta transacionalidad manualmente?

Muchas gracias