Foros del Web » Programación para mayores de 30 ;) » Java »

[Hibernate]Insertar con transacionalidad "manual"

Estas en el tema de [Hibernate]Insertar con transacionalidad "manual" en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/10/2010, 05:59
 
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

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:13.