sql >> データベース >  >> RDS >> Mysql

Hibernateとmysqlを使用した接続が多すぎます

    これは、SessionFactoryをビルドするとすぐに作成された接続プールを使用しているためですが、接続はセッションを開いたときにのみ取得されます。これで、接続が解放されたためにセッションを閉じていますが、閉じられておらず、プールによって保持されています。ここで、再びSessionFactoryを作成し、新しいプールを作成し、次にセッションを取得して、新しい接続を作成します。これにより、最終的に許可される接続の最大数に達します。

    あなたがしなければならないのは、1つの接続プールを使用して(1つのSessionFactoryを使用して)、同じプールから接続を取得および解放することです。

    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. 読み取り/書き込みモードでデータベースを開くことができません

    2. mysqlはphpmyadminのユーザー定義関数のリストを表示します

    3. WHEREと共有される計算でのMySQLORDERBYの最適化

    4. MySqlデータベースからの日付ブロックの配列が必要