Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso evitar que o Hibernate + c3p0 + MySql crie um grande número de conexões adormecidas?


Ao usar um pool de conexões, chamando Connection#close() não fecha fisicamente a conexão, mas a retorna ao pool para reutilização futura. Em outras palavras, a conexão permanece aberta e esse é o objetivo de usar um pool.

Bem, esse é o problema. Você está criando uma SessionFactory repetidamente (cada um criando seu próprio pool), enquanto você deve criá-lo apenas uma vez durante toda a vida útil do seu aplicativo. Se você não estiver usando nenhum framework em particular, isso normalmente é feito em alguma classe de utilitário (o famoso HibernateUtil aula).

O Tutorial do Hibernate oficial tem um exemplo muito básico de tal classe. Ou veja este que é um pouco mais rico.