Gestion des connexions de base de données

Interroger une base de données PostgreSQL en Java

Miller Trujillo

Staff Software Engineer

Pourquoi la gestion des connexions est-elle importante ?

$$

  • Chaque connexion ouvre un socket réseau
  • Nécessite authentification et allocation de ressources
  • Connexions non fermées causent des fuites
  • Nouvelles connexions peuvent échouer

Un diagramme montrant plusieurs connexions de base de données s'accumulant, certaines marquées comme "connexions zombies" ouvertes mais inutilisées

Interroger une base de données PostgreSQL en Java

try-with-resources

String sql = "SELECT COUNT(*) FROM books";


try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql)) {
if (rs.next()) { System.out.println("Total des livres : " + rs.getInt(1)); } }
  • Les connexions sont fermées automatiquement
Interroger une base de données PostgreSQL en Java

Pooling de connexions

  • Nouvelles connexions répètent une configuration coûteuse
  • Le pooling réutilise les connexions existantes
  • Les connexions retournent au pool une fois terminées

Une analogie avec une station de taxis

Un diagramme montrant un pool de connexions avec plusieurs connexions préétablies, avec des flèches montrant les connexions empruntées et retournées

Interroger une base de données PostgreSQL en Java

Exemple HikariCP

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;


HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:postgresql://localhost:5432/library"); config.setUsername("postgres"); config.setPassword("secret");
HikariDataSource ds = new HikariDataSource(config);
try (Connection conn = ds.getConnection()) { System.out.println("Connecté avec HikariCP !"); }
Interroger une base de données PostgreSQL en Java

Journalisation console HikariCP

[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Démarrage...
[main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - 
    Connexion ajoutée org.postgresql.jdbc.PgConnection@ID
[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Démarrage terminé.
Interroger une base de données PostgreSQL en Java

Passons à la pratique !

Interroger une base de données PostgreSQL en Java

Preparing Video For Download...