C3p0 gebruiken met slaapstand

1. Overzicht

Het tot stand brengen van databaseverbindingen is vrij duur. Het poolen van databaseverbindingen is een gevestigde manier om deze uitgaven te verlagen.

In deze zelfstudie bespreken we hoe u c3p0 met Hibernate kunt gebruiken om verbindingen te poolen.

2. Wat is c3p0?

c3p0 iseen Java-bibliotheek die een gemakkelijke manier biedt voor het beheren van databaseverbindingen.

Kortom, het bereikt dit door een pool van verbindingen te creëren. Het behandelt ook effectief het opruimen van Uitspraaks en ResultSets na gebruik. Deze opschoning is nodig om ervoor te zorgen dat het gebruik van bronnen wordt geoptimaliseerd en dat er geen vermijdbare impasses optreden.

Deze bibliotheek kan naadloos worden geïntegreerd met verschillende traditionele JDBC-stuurprogramma's. Bovendien biedt het een laag voor het aanpassen van op DriverManager gebaseerde JDBC-stuurprogramma's aan de nieuwere javax.sql.DataSource regeling.

En omdat Hibernate het verbinden met databases via JDBC ondersteunt, het is eenvoudig om Hibernate en c3p0 samen te gebruiken.

3. Configureren van c3p0 met slaapstand

Laten we nu eens kijken hoe we een bestaande Hibernate-applicatie kunnen configureren om c3p0 te gebruiken als databaseverbindingsmanager.

3.1. Afhankelijkheden van Maven

Ten eerste moeten we eerst de slaapstand-c3p0 maven afhankelijkheid:

 org.hibernate hibernate-c3p0 5.3.6.Final 

Met Hibernate 5 is het voldoende om de bovenstaande afhankelijkheid toe te voegen om c3p0 in te schakelen. Dit geldt zolang er geen andere JDBC-verbindingspoolbeheerder is opgegeven.

Daarom kunnen we, nadat we de afhankelijkheid hebben toegevoegd, onze applicatie uitvoeren en de logboeken controleren:

Initialiseren van c3p0-0.9.5.2 [gebouwd op 8 december 2015 22:06:04 -0800; debuggen? waar; trace: 10] Initialiseren van c3p0 pool ... [e-mail beveiligd] [... standaard instellingen ...]

Als een andere JDBC-verbindingspoolbeheerder wordt gebruikt, kunnen we onze applicatie dwingen om c3p0 te gebruiken. We hoeven alleen de provider_class naar C3P0ConnectionProvider in ons eigenschappenbestand:

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

3.2. Eigenschappen van verbindingspool

Uiteindelijk zullen we de standaardconfiguratie moeten overschrijven. We kunnen aangepaste eigenschappen toevoegen aan het slaapstand.cfg.xml het dossier:

5 20 5 1800

Evenzo is het slaapstand.eigenschappen bestand kan dezelfde instellingen bevatten:

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

De min_size eigenschap specificeert het minimum aantal verbindingen dat het op een bepaald moment moet behouden. Standaard behoudt het ten minste drie verbindingen. Deze instelling bepaalt ook de initiële grootte van de pool.

De max_size eigenschap specificeert het maximale aantal verbindingen dat het op een bepaald moment kan onderhouden. Standaard behoudt het maximaal 15 verbindingen.

De acquisitie_increment eigenschap specificeert hoeveel verbindingen het moet proberen te verkrijgen als de pool geen beschikbare verbindingen meer heeft. Standaard zal het proberen om drie nieuwe verbindingen te verkrijgen.

De time-out eigenschap specificeert het aantal seconden dat een ongebruikte verbinding behouden blijft voordat deze wordt verwijderd. Standaard verlopen verbindingen nooit uit de pool.

We kunnen de nieuwe poolinstellingen verifiëren door de logboeken opnieuw te controleren:

Initialiseren van c3p0-0.9.5.2 [gebouwd op 8 december 2015 22:06:04 -0800; debuggen? waar; trace: 10] Initialiseren van c3p0 pool ... [e-mail beveiligd] [... nieuwe instellingen ...]

Dit zijn de basiseigenschappen van de verbindingspool. Bovendien zijn andere configuratie-eigenschappen te vinden in de officiële gids.

5. Conclusie

In dit artikel hebben we besproken hoe u c3p0 met Hibernate kunt gebruiken. We hebben enkele algemene configuratie-eigenschappen bekeken en c3p0 toegevoegd aan een testapplicatie.

Voor de meeste omgevingen raden we aan om een ​​verbindingspoolmanager zoals c3p0 of HikariCP te gebruiken in plaats van traditionele JDBC-stuurprogramma's.

Zoals gewoonlijk is de volledige broncode voor deze tutorial beschikbaar op GitHub.