sql >> Base de Datos >  >> RDS >> Mysql

Demasiadas conexiones usando Hibernate y mysql

Esto se debe a que está utilizando un grupo de conexiones que se creó tan pronto como creó SessionFactory, pero las conexiones se adquieren solo cuando abre una sesión. Ahora, está cerrando la sesión, por lo que las conexiones se liberan, pero no se cierran y el grupo las retiene. Ahora, nuevamente está creando una SessionFactory, por lo tanto, creando un nuevo grupo, luego obteniendo una sesión, por lo tanto, creando una nueva conexión, etc., que eventualmente alcanzará la cantidad máxima de conexiones permitidas.

Lo que tiene que hacer es usar un grupo de conexiones (usando un SessionFactory) y obtener y liberar las conexiones del mismo grupo.

public class DBConnection {

      private static SessionFactory factory;
      static {
            factory = new Configuration().configure().buildSessionFactory();
      }

      public Session getSession() {
            return factory.openSession();
      }

      public void doWork() {
           Session session = getSession();
           // do work.
           session.close();
      }

     // Call this during shutdown
     public static void close() {
          factory.close();
     }
}