Utilisation de c3p0 avec Hibernate

1. Vue d'ensemble

Il est assez coûteux d'établir des connexions de base de données. La mise en commun des connexions à la base de données est un moyen bien établi de réduire ces dépenses.

Dans ce didacticiel, nous verrons comment utiliser c3p0 avec Hibernate pour regrouper les connexions.

2. Qu'est-ce que c3p0?

c3p0 est une bibliothèque Java qui fournit un moyen pratique de gérer les connexions aux bases de données .

En bref, il y parvient en créant un pool de connexions. Il gère également efficacement le nettoyage des Statement s et ResultSet après utilisation. Ce nettoyage est nécessaire pour garantir que l'utilisation des ressources est optimisée et que les blocages évitables ne se produisent pas.

Cette bibliothèque s'intègre de manière transparente avec divers pilotes JDBC traditionnels. De plus, il fournit une couche pour adapter les pilotes JDBC basés sur DriverManager au nouveau schéma javax.sql.DataSource .

Et, parce qu'Hibernate prend en charge la connexion aux bases de données via JDBC, il est simple d'utiliser Hibernate et c3p0 ensemble.

3. Configuration de c3p0 avec Hibernate

Voyons maintenant comment configurer une application Hibernate existante pour utiliser c3p0 comme gestionnaire de connexion à la base de données.

3.1. Dépendances de Maven

Tout d'abord, nous devons d'abord ajouter la dépendance maven hibernate-c3p0 :

 org.hibernate hibernate-c3p0 5.3.6.Final 

Avec Hibernate 5, il suffit d'ajouter la dépendance ci-dessus pour activer c3p0. Cela est vrai tant qu'aucun autre gestionnaire de pool de connexions JDBC n'est spécifié.

Par conséquent, après avoir ajouté la dépendance, nous pouvons exécuter notre application et vérifier les journaux:

Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10] Initializing c3p0 pool... [email protected] [ ... default settings ... ]

Si un autre gestionnaire de pool de connexions JDBC est utilisé, nous pouvons forcer notre application à utiliser c3p0. Nous devons simplement définir le provider_class sur C3P0ConnectionProvider dans notre fichier de propriétés:

hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider

3.2. Propriétés du pool de connexions

Finalement, nous devrons remplacer la configuration par défaut. Nous pouvons ajouter des propriétés personnalisées au fichier hibernate.cfg.xml :

5 20 5 1800

De même, le fichier hibernate.properties peut contenir les mêmes paramètres:

hibernate.c3p0.min_size=5 hibernate.c3p0.max_size=20 hibernate.c3p0.acquire_increment=5 hibernate.c3p0.timeout=1800

La propriété min_size spécifie le nombre minimum de connexions qu'elle doit maintenir à un moment donné. Par défaut, il maintiendra au moins trois connexions . Ce paramètre définit également la taille initiale du pool.

La propriété max_size spécifie le nombre maximum de connexions qu'elle peut maintenir à un moment donné. Par défaut, il conservera un maximum de 15 connexions .

La propriété acquiert_increment spécifie le nombre de connexions qu'elle doit essayer d'acquérir si le pool manque de connexions disponibles. Par défaut, il tentera d'acquérir trois nouvelles connexions.

La propriété timeout spécifie le nombre de secondes pendant lesquelles une connexion inutilisée sera conservée avant d'être supprimée. Par défaut, les connexions n'expireront jamais du pool.

Nous pouvons vérifier les nouveaux paramètres du pool en vérifiant à nouveau les journaux:

Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10] Initializing c3p0 pool... [email protected] [ ... new settings ... ]

Voici les propriétés de base du pool de connexions. De plus, d'autres propriétés de configuration peuvent être trouvées dans le guide officiel.

5. Conclusion

Dans cet article, nous avons expliqué comment utiliser c3p0 avec Hibernate. Nous avons examiné certaines propriétés de configuration courantes et ajouté c3p0 à une application de test.

Pour la plupart des environnements, nous vous recommandons d'utiliser un gestionnaire de pool de connexions tel que c3p0 ou HikariCP au lieu des pilotes JDBC traditionnels.

Comme d'habitude, le code source complet de ce tutoriel est disponible sur GitHub.