Aplicaciones J2EE: librería c3p0

En el desarrollo de aplicaciones J2EE es muy típico encontrarnos con conexiones a base de datos para realizar aplicaciones más potentes. Este tipo de conexiones suelen implementarse sobre MySQL (sistema de gestión de base de datos), pero para aplicaciones web de larga vida nos encontramos el gran inconveniente de que este sistema finaliza por defecto todas las conexiones después de las 8 horas de inactividad.

La primera solución y más obvia al problema sería reconectar si la conexión se ha terminado. Pero si nuestra aplicación está diseñada sobre el framework Hibernate nos encontramos con otro problema: Hibernate no es capaz de volver a conectar sin configurar algún tipo de pool de conexiones.

Si queremos desarrollar una aplicación J2EE diseñada con Hibernate y usando conexiones sobre MySQL tendremos que incluir alguna funcionalidad que nos permita solventar este problema. Esta solución nos la proporciona la librería c3p0.

c3p0 es una librería de fácil uso que aumenta la funcionalidad de los drivers JDBC para las conexiones de las aplicaciones con base de datos.

No necesita ninguna instalación, simplemente se agrega la librería a la aplicación y se modifica el archivo de configuración de Hibernate para su uso.

Aquí pongo un ejemplo sencillo de las líneas que habría que añadir a dicho archivo (hibernate.cfg.xml):

<!-- configuration pool via c3p0 -->
<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">100</property>
<!-- seconds -->

* Documentación de la librería:
http://www.mchange.com/projects/c3p0/index.html
* Propiedades de la configuración:
http://community.jboss.org/wiki/HowToconfiguretheC3P0connectionpool
* Última versión (0.9.1.2) disponible en SourceForge:
http://sourceforge.net/projects/c3p0/