Verwenden von c3p0 mit Hibernate

1. Übersicht

Das Herstellen von Datenbankverbindungen ist ziemlich teuer. Das Pooling von Datenbankverbindungen ist eine etablierte Methode, um diese Ausgaben zu senken.

In diesem Tutorial wird erläutert, wie Sie c3p0 mit Hibernate verwenden, um Verbindungen zu bündeln.

2. Was ist c3p0?

c3p0 ist eine Java-Bibliothek, die eine bequeme Möglichkeit zum Verwalten von Datenbankverbindungen bietet .

Kurz gesagt, dies wird erreicht, indem ein Pool von Verbindungen erstellt wird. Es bereinigt auch effektiv die Bereinigung von Anweisungen und ResultSets nach der Verwendung. Diese Bereinigung ist erforderlich, um sicherzustellen, dass die Ressourcennutzung optimiert wird und keine vermeidbaren Deadlocks auftreten.

Diese Bibliothek lässt sich nahtlos in verschiedene herkömmliche JDBC-Treiber integrieren. Darüber hinaus bietet es eine Ebene zum Anpassen von DriverManager-basierten JDBC-Treibern an das neuere Schema javax.sql.DataSource .

Da Hibernate die Verbindung zu Datenbanken über JDBC unterstützt, ist es einfach, Hibernate und c3p0 zusammen zu verwenden.

3. Konfigurieren von c3p0 im Ruhezustand

Schauen wir uns nun an, wie Sie eine vorhandene Hibernate-Anwendung so konfigurieren, dass c3p0 als Datenbankverbindungsmanager verwendet wird.

3.1. Maven-Abhängigkeiten

Zunächst müssen wir die Maven-Abhängigkeit für den Ruhezustand-c3p0 hinzufügen:

 org.hibernate hibernate-c3p0 5.3.6.Final 

In Hibernate 5 reicht es aus, nur die oben genannte Abhängigkeit hinzuzufügen, um c3p0 zu aktivieren. Dies gilt, solange kein anderer JDBC-Verbindungspoolmanager angegeben ist.

Nachdem wir die Abhängigkeit hinzugefügt haben, können wir daher unsere Anwendung ausführen und die Protokolle überprüfen:

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 ... ]

Wenn ein anderer JDBC-Verbindungspoolmanager verwendet wird, können wir unsere Anwendung zur Verwendung von c3p0 zwingen. Wir müssen nur die provider_class in unserer Eigenschaftendatei auf C3P0ConnectionProvider setzen :

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

3.2. Eigenschaften des Verbindungspools

Schließlich müssen wir die Standardkonfiguration überschreiben. Wir können benutzerdefinierte Eigenschaften zum hinzufügen hibernate.cfg.xml Datei:

5 20 5 1800

Ebenso die hibernate.properties kann Datei die gleichen Einstellungen enthalten:

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

Die Eigenschaft min_size gibt die Mindestanzahl von Verbindungen an, die zu einem bestimmten Zeitpunkt beibehalten werden sollen. Standardmäßig werden mindestens drei Verbindungen beibehalten . Diese Einstellung definiert auch die Anfangsgröße des Pools.

Die Eigenschaft max_size gibt die maximale Anzahl von Verbindungen an, die zu einem bestimmten Zeitpunkt aufrechterhalten werden können. Standardmäßig bleiben maximal 15 Verbindungen erhalten .

Die Eigenschaft " purchase_increment" gibt an, wie viele Verbindungen versucht werden soll, wenn dem Pool die verfügbaren Verbindungen ausgehen. Standardmäßig wird versucht, drei neue Verbindungen herzustellen.

Die Eigenschaft timeout gibt an, wie viele Sekunden eine nicht verwendete Verbindung beibehalten wird, bevor sie verworfen wird. Standardmäßig verfallen Verbindungen aus dem Pool nie.

Wir können die neuen Pooleinstellungen überprüfen, indem wir die Protokolle erneut überprüfen:

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 ... ]

Dies sind die grundlegenden Eigenschaften des Verbindungspools. Weitere Konfigurationseigenschaften finden Sie im offiziellen Handbuch.

5. Schlussfolgerung

In diesem Artikel haben wir die Verwendung von c3p0 mit Hibernate erläutert. Wir haben uns einige allgemeine Konfigurationseigenschaften angesehen und einer Testanwendung c3p0 hinzugefügt.

In den meisten Umgebungen empfehlen wir die Verwendung eines Verbindungspoolmanagers wie c3p0 oder HikariCP anstelle herkömmlicher JDBC-Treiber.

Wie üblich ist der vollständige Quellcode für dieses Tutorial auf GitHub verfügbar.