sql >> Databasteknik >  >> RDS >> Mysql

För många anslutningar med Hibernate och mysql

Detta beror på att du använder en anslutningspool som skapades så snart du byggde SessionFactory, men anslutningarna förvärvas först när du öppnar en session. Nu stänger du sessionen, på grund av vilka anslutningar släpps men inte stängs och hålls uppe av poolen. Nu skapar du igen en SessionFactory, därav att skapa en ny pool, sedan få en session, därav skapa en ny anslutning och så vidare... som så småningom kommer att nå det maximala antalet tillåtna anslutningar.

Vad du behöver göra är att använda en anslutningspool (med en SessionFactory) och hämta och släppa anslutningarna från samma pool.

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


  1. Migrera Google Cloud SQL för MySQL till en lokal server

  2. PHP PDO-undantag + varning på MySQL har försvunnit?

  3. Hur uttrycker jag en har många genom relation i Entity Framework 5?

  4. PHP, MySQL och tidszoner