sql >> Databáze >  >> RDS >> Mysql

Příliš mnoho připojení pomocí Hibernate a mysql

Je to proto, že používáte fond připojení, který byl vytvořen, jakmile sestavíte SessionFactory, ale připojení se získají pouze tehdy, když otevřete relaci. Nyní zavíráte relaci, kvůli které jsou připojení uvolněna, ale nejsou uzavřena a jsou zdržována fondem. Nyní znovu vytváříte SessionFactory, tedy vytváříte nový fond, pak získáváte relaci, tudíž vytváříte nové připojení a tak dále.. které nakonec dosáhne maximálního povoleného počtu připojení.

Musíte použít jeden fond připojení (pomocí jedné SessionFactory) a získat a uvolnit připojení ze stejného fondu.

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. Proč PostgreSQL nemá rád názvy tabulek VELKÝMI PÍSMENY?

  2. Dopad definice sloupce VARCHAR2 s větší délkou

  3. Chyba:Klient nepodporuje ověřovací protokol požadovaný serverem; zvážit upgrade klienta MySQL

  4. seznam datumů mysql s počtem, i když k určitému datu nejsou žádná data