Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je empêcher Hibernate + c3p0 + MySql de créer un grand nombre de connexions endormies ?

Lorsque vous utilisez un pool de connexions, appelez Connection#close() ne ferme pas physiquement la connexion mais la renvoie au pool pour une réutilisation future. En d'autres termes, la connexion reste ouverte et c'est tout l'intérêt d'utiliser un pool.

Eh bien, c'est le problème. Vous créez une SessionFactory encore et encore (chacun créant son propre pool) alors que vous ne devriez le créer qu'une seule fois pour la durée de vie de votre application. Si vous n'utilisez pas de framework particulier, cela se fait généralement dans une classe utilitaire (le fameux HibernateUtil classe).

Le tutoriel Hibernate a un exemple très basique d'une telle classe. Ou consultez celui-ci qui est un peu plus riche.