Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Terlalu banyak koneksi menggunakan Hibernate dan mysql

Ini karena Anda menggunakan kumpulan koneksi yang dibuat segera setelah Anda membangun SessionFactory, tetapi koneksi hanya diperoleh saat Anda membuka Sesi. Sekarang, Anda menutup sesi, karena koneksi mana yang dilepaskan, tetapi tidak ditutup dan ditahan oleh kumpulan. Sekarang, Anda kembali membuat SessionFactory, sehingga membuat kumpulan baru, lalu mendapatkan sesi, sehingga membuat koneksi baru dan seterusnya.. yang pada akhirnya akan mencapai jumlah maksimum koneksi yang diizinkan.

Yang harus Anda lakukan adalah menggunakan satu Connection Pool (menggunakan satu SessionFactory) dan mendapatkan dan melepaskan koneksi dari pool yang sama.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri Basis Data Kompleks di yii2 dengan Rekaman Aktif

  2. Mysql menambah kolom secara otomatis dengan satu kunci utama tertentu

  3. mySql - membuat gabungan menggunakan daftar nilai yang dipisahkan koma

  4. mysql-connector-java untuk mysql 5.6

  5. Bagaimana cara membuat kelas model entitas generik yang mendukung id generik termasuk id yang dibuat secara otomatis?