sql >> Database teknologi >  >> RDS >> Mysql

For mange forbindelser ved hjælp af Hibernate og mysql

Dette skyldes, at du bruger en forbindelsespulje, som blev oprettet, så snart du byggede SessionFactory, men forbindelserne erhverves kun, når du åbner en session. Nu lukker du sessionen, på grund af hvilke forbindelser frigives, men ikke lukkes og holdes oppe af poolen. Nu opretter du igen en SessionFactory, derfor opretter du en ny pulje, får derefter en session, og skaber derfor en ny forbindelse og så videre.. som til sidst vil nå det maksimale antal tilladte forbindelser.

Det, du skal gøre, er at bruge én forbindelsespulje (ved at bruge én SessionFactory) og hente og frigive forbindelserne fra den samme 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. Server Side Events med PHP &MySQL

  2. Hvordan omdirigerer man outputtet fra DBMS_OUTPUT.PUT_LINE til en fil?

  3. Returner resultater af en sql-forespørgsel som JSON i oracle 12c

  4. Returner en rangering fra flere tabeller med mySQL