Tutorials  /  JavaScript

Connection Pooling in Java: So verbessern Sie die Effizienz Ihrer Anwendungen

Ccentron Redaktion · Oktober 2024 ·3 Min. Lesezeit ·JavaScript, Tutorial

Einführung in Connection Pooling

Connection Pooling ist ein entscheidendes Konzept für die Leistungsoptimierung von Datenbankanwendungen. Es ermöglicht die Wiederverwendung von Datenbankverbindungen, anstatt für jede Anfrage eine neue Verbindung zu erstellen. Diese Technik basiert auf dem Objektpool-Entwurfsmuster, das in Szenarien nützlich ist, in denen die Erstellung neuer Objekte (wie Datenbankverbindungen) zeit- und ressourcenintensiv ist.

Vorteile von Connection Pooling

Durch die Implementierung von Connection Pooling kann die Leistung einer Anwendung erheblich gesteigert werden, da bereits bestehende Verbindungen verwendet werden können. Dies führt zu einer schnelleren Reaktionszeit und einer besseren Ressourcennutzung.

Aufbau eines Connection Pools

Ein Connection-Pooling-Framework muss typischerweise die folgenden Aufgaben erfüllen:

  1. Erstellen von Verbindungsobjekten: Das Framework sollte in der Lage sein, neue Verbindungen bei Bedarf zu erzeugen.
  2. Verwaltung und Validierung der Verbindungen: Das System muss den Status der Verbindungen überwachen und sicherstellen, dass sie gültig sind.
  3. Freigabe und Zerstörung von Verbindungen: Bei Bedarf müssen Verbindungen freigegeben oder zerstört werden, um Ressourcen zu sparen.

Implementierungen in Java

Es gibt mehrere bewährte Bibliotheken, die für das Connection Pooling in Java verwendet werden können:

  • Apache Commons DBCP
  • HikariCP
  • C3P0

Im Folgenden betrachten wir einige Beispiele für die Implementierung dieser Bibliotheken.

Datenbank-Skripte

Bevor wir mit der Implementierung beginnen, erstellen wir eine Datenbank und eine Tabelle:

SQL
CREATE DATABASE empdb;

USE empdb;

CREATE TABLE tblemployee (
    empId INTEGER AUTO_INCREMENT PRIMARY KEY,
    empName VARCHAR(64),
    dob DATE,
    designation VARCHAR(64)
);

INSERT INTO tblemployee (empName, dob, designation) VALUES 
('Adam', '1998-08-15', 'Manager'),
('Smith', '2001-01-11', 'Clerk'),
('James', '1996-03-13', 'Officer');

Beispielprojekt mit Apache Commons DBCP

Um ein einfaches Java-Projekt zu erstellen, folgen Sie diesen Schritten in Eclipse:

  1. Öffnen Sie Eclipse IDE.
  2. Wählen Sie im Menü Datei die Option Neu > Maven-Projekt.
  3. Wählen Sie die Option Einfaches Projekt erstellen und klicken Sie auf Weiter.
  4. Geben Sie eine Gruppen-ID, Artefakt-ID, Namen und eine Beschreibung ein und klicken Sie auf Fertigstellen.

Fügen Sie dann die MySQL-Abhängigkeit in Ihrer pom.xml hinzu:

Code
mysql
mysql-connector-java
5.1.49

Beispielcode für DBCP

Go
package com.journaldev.example;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp2.BasicDataSource;

public class DBCP2Demo {
    private static BasicDataSource dataSource = new BasicDataSource();

    static {
        dataSource.setUrl("jdbc:mysql://localhost:3306/empdb?useSSL=false");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        dataSource.setMinIdle(5);
        dataSource.setMaxIdle(10);
        dataSource.setMaxTotal(25);
    }

    public static void main(String[] args) throws SQLException {
        try (Connection connection = dataSource.getConnection();
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery("SELECT * FROM tblemployee")) {
            while (resultSet.next()) {
                System.out.println("empId: " + resultSet.getInt("empId"));
                System.out.println("empName: " + resultSet.getString("empName"));
                System.out.println("dob: " + resultSet.getDate("dob"));
                System.out.println("designation: " + resultSet.getString("designation"));
            }
        }
    }
}

Beispielprojekt mit HikariCP

Fügen Sie die folgende Abhängigkeit in Ihre pom.xml für HikariCP hinzu:

Code
com.zaxxer
HikariCP
3.4.5

Beispielcode für HikariCP

Go
package com.journaldev.example;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

public class HikariCPDemo {
    private static HikariDataSource dataSource;

    static {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mysql://localhost:3306/empdb");
        config.setUsername("root");
        config.setPassword("root");
        config.addDataSourceProperty("minimumIdle", "5");
        config.addDataSourceProperty("maximumPoolSize", "25");
        dataSource = new HikariDataSource(config);
    }

    public static void main(String[] args) throws SQLException {
        try (Connection connection = dataSource.getConnection();
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery("SELECT * FROM tblemployee")) {
            while (resultSet.next()) {
                System.out.println("empId: " + resultSet.getInt("empId"));
                System.out.println("empName: " + resultSet.getString("empName"));
                System.out.println("dob: " + resultSet.getDate("dob"));
                System.out.println("designation: " + resultSet.getString("designation"));
            }
        }
    }
}

Beispielprojekt mit C3P0

Fügen Sie die folgende Abhängigkeit in Ihre pom.xml für C3P0 hinzu:

Code
com.mchange
c3p0
0.9.5.5

Beispielcode für C3P0

Go
package com.journaldev.example;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Demo {
    static ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();

    static {
        comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/empdb?useSSL=false");
        comboPooledDataSource.setUser("root");
        comboPooledDataSource.setPassword("root");
        comboPooledDataSource.setMinPoolSize(3);
        comboPooledDataSource.setAcquireIncrement(3);
        comboPooledDataSource.setMaxPoolSize(30);
    }

    public static void main(String[] args) throws SQLException {
        try (Connection connection = comboPooledDataSource.getConnection();
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery("SELECT * FROM tblemployee")) {
            while (resultSet.next()) {
                System.out.println("empId: " + resultSet.getInt("empId"));
                System.out.println("empName: " + resultSet.getString("empName"));
                System.out.println("dob: " + resultSet.getDate("dob"));
                System.out.println("designation: " + resultSet.getString("designation"));
            }
        }
    }
}

Fazit

Connection Pooling ist eine wesentliche Technik zur Verbesserung der Leistung von Datenbankanwendungen in Java. Mit Bibliotheken wie Apache Commons DBCP, HikariCP und C3P0 können Sie effektive und effiziente Connection-Pooling-Lösungen implementieren, die Ihre Anwendung erheblich beschleunigen. Durch das Wiederverwenden von Verbindungen optimieren Sie die Ressourcennutzung und reduzieren die Latenzzeiten bei Datenbankanfragen.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie JavaScript
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren