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();
}
}