Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membetulkan Ralat \'com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Tiada operasi selepas sambungan ditutup\' dalam Hibernate?
Mendiagnosis "com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Tiada operasi dibenarkan selepas sambungan ditutup" Ralat
Apabila menggunakan Hibernate dengan sambungan jauh, anda mungkin menghadapi ralat "Tiada operasi dibenarkan selepas sambungan ditutup" disebabkan sambungan terputus. Secara lalai, MySQL mempunyai tetapan tunggu_masa tamat yang boleh menyebabkan sambungan ditutup selepas tempoh tidak aktif. Ini boleh berlaku semasa aplikasi lanjutan berjalan atau jika terdapat ketidakstabilan rangkaian.
Pengumpulan Sambungan dengan C3P0
Untuk menangani isu ini, disyorkan untuk menggunakan perpustakaan pengumpulan sambungan seperti C3P0. Pengumpulan sambungan asli Hibernate adalah terhad dan tidak sesuai untuk persekitaran pengeluaran. Pengumpulan sambungan mewujudkan himpunan sambungan yang diurus dan digunakan semula oleh aplikasi, mengurangkan overhed untuk mewujudkan sambungan baharu untuk setiap pertanyaan.
Mengkonfigurasi C3P0 dengan Hibernate
Inilah fail konfigurasi yang dikemas kini menggunakan C3P0:
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/xyz</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.show_sql">false</property> <property name="hibernate.current_session_context_class">thread</property> <property name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="c3p0.acquire_increment">1</property> <property name="c3p0.idle_test_period">100</property> <!-- seconds --> <property name="c3p0.max_size">100</property> <property name="c3p0.max_statements">0</property> <property name="c3p0.min_size">10</property> <property name="c3p0.timeout">3600</property> <!-- seconds -->
Dalam konfigurasi ini, pembekal sambungan C3P0 didayakan dengan tetapan yang sesuai untuk saiz kumpulan, tamat masa dan ujian sambungan.
Lain-lain Punca Berpotensi
Jika pengumpulan sambungan tidak menyelesaikan isu ini, adalah wajar untuk menyiasat punca berpotensi lain, seperti:
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Tiada operasi selepas sambungan ditutup\' dalam Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!