Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/07/2010, 10:37
Avatar de francopai
francopai
 
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 16 años, 2 meses
Puntos: 2
Reconexion en Hibernate

Hola a todos, la cuestion es la siguiente: cuando ocurre algun error con el motor de base de datos, como por ej perder la conexion, hibernate no vuelve a reconectar, por ej. si al medio de una consulta reinicio el servicio de mysql, cuando continua la ejecucion, Hibernate no reconecta ni tampoco puede hacer rollback.
Segun lei en la documentacion, a Hibernate hay que pedirle solo Sessions y el se encarga de las conexion, pero evidentemente no es asi. Dejo mi codigo a continuacion a ver si alguien me puede tirar una idea de como correjirlo.

Muchas Gracias

Mi clase HibernateUtil:

public class HibernateUtil {

private static SessionFactory sessionFactory;

public static void createSessionFactory() {
String url = "jdbc:mysql://" + mihost + ":"
+ miPuertoHost + "/" + miBDname;

sessionFactory = new Configuration()
.configure("/sic/modelo/hibernate/hibernate.cfg.xml")
.setProperty("hibernate.connection.url", url)
.setProperty("hibernate.connection.username", miUser)
.setProperty("hibernate.connection.password", miPass)
.buildSessionFactory();
}

public static void conectar() {
createSessionFactory();
}

public static void desconectar() {
if (!sessionFactory.isClosed()) {
sessionFactory.close();
}
}

public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}


Una metodo en el cual hago uso de Hibernate:

public Usuario getUsuarioPorNombre(String nombreNuevo) throws HibernateException {
HibernateUtil.conectar();
Session session = HibernateUtil.getSessionFactory().openSession();

try {
session.beginTransaction();

//Todas las operaciones necesarias...

session.getTransaction().commit();
return usuario;

} catch (RuntimeException ex) {
session.getTransaction().rollback();
throw ex;

} finally {
session.close();
HibernateUtil.desconectar();
}
}

Última edición por francopai; 15/07/2010 a las 12:10