sql >> Database >  >> RDS >> Mysql

Hoe kan ik voorkomen dat Hibernate + c3p0 + MySql grote aantallen slapende verbindingen maakt?

Als u een verbindingspool gebruikt, roept u Connection#close() . aan sluit de verbinding niet fysiek af, maar stuurt deze terug naar de pool voor toekomstig hergebruik. Met andere woorden, de verbinding blijft open en dat is het hele punt van het gebruik van een pool.

Nou, dat is het probleem. U maakt een SessionFactory keer op keer (elk creëert zijn eigen pool), terwijl u deze slechts één keer moet maken voor de levensduur van uw aanvraag. Als u geen bepaald framework gebruikt, wordt dit meestal gedaan in een bepaalde utility-klasse (de beroemde HibernateUtil klas).

De officiële Hibernate-zelfstudie heeft een heel eenvoudig voorbeeld van zo'n klasse. Of bekijk deze wat een beetje rijker is.



  1. MySQL Illegale mix van collaties

  2. MySQL-query met CASE om meerdere kolommen te SELECTEREN

  3. PostgreSQL accepteert geen kolomalias in WHERE-clausule

  4. Retourneer het einde van de maand in SQLite