Verwendung von c3p0 mit Ruhezustand

C3p0 mit Ruhezustand verwenden

1. Überblick

Das Herstellen von Datenbankverbindungen ist ziemlich teuer. Die Datenbankconnection pooling ist ein etablierter Weg, um diese Ausgaben zu senken.

In diesem Lernprogramm wird erläutert, wie Siec3p0 im Ruhezustand verwenden, um Verbindungen zu bündeln.

2. Was ist c3p0?

c3p0 isa Java library that provides a convenient way for managing database connections.

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

This library integrates seamlessly with various traditional JDBC drivers. Darüber hinaus bietet es eine Ebene zum Anpassen von DriverManager-basierten JDBC-Treibern an das neuerejavax.sql.DataSource -Schema.

Und da Hibernate die Verbindung zu Datenbanken über JDBC unterstützt,it’s simple to use Hibernate and c3p0 together.

3. C3p0 mit Hibernate konfigurieren

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 vonhibernate-c3p0hinzufügen:


    org.hibernate
    hibernate-c3p0
    5.3.6.Final

In Hibernate 5 reicht es aus, nur die obige Abhängigkeit hinzuzufügen, um c3p0 zu aktivieren. This is true as long as no other JDBC connection pool manager is specified.

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-Verbindungspool-Manager verwendet wird, können wir unsere Anwendung zur Verwendung von c3p0 zwingen. Wir müssen nurprovider_class aufC3P0ConnectionProvider in unserer Eigenschaftendatei 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 der Dateihibernate.cfg.xmlbenutzerdefinierte Eigenschaften hinzufügen:

5
20
5
1800

Ebenso kann die Dateihibernate.propertiesdie gleichen Einstellungen enthalten:

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

Die Eigenschaftmin_size gibt die Mindestanzahl von Verbindungen an, die zu einem bestimmten Zeitpunkt beibehalten werden sollen. By default, it will maintain at least three connections. Diese Einstellung definiert auch die Anfangsgröße des Pools.

Die Eigenschaftmax_size gibt die maximale Anzahl von Verbindungen an, die zu einem bestimmten Zeitpunkt aufrechterhalten werden können. By default, it will keep a maximum of 15 connections.

Die Eigenschaftacquire_incrementgibt an, wie viele Verbindungen versucht werden soll, wenn dem Pool die verfügbaren Verbindungen ausgehen. Standardmäßig wird versucht, drei neue Verbindungen zu erhalten.

Die Eigenschafttimeoutgibt an, wie viele Sekunden eine nicht verwendete Verbindung beibehalten wird, bevor sie verworfen wird. By default, connections will never expire from the pool.

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. Darüber hinaus finden Sie weitere Konfigurationseigenschaften inofficial guide.

5. Fazit

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 oderHikariCP anstelle herkömmlicher JDBC-Treiber.

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