Gérer les connexions à la base de données

Interroger une base de données PostgreSQL en Java

Miller Trujillo

Staff Software Engineer

Pourquoi gérer les connexions ?

$$

  • Chaque connexion ouvre une socket réseau
  • Nécessite authentification et ressources
  • Connexions non fermées = fuites de ressources
  • Les nouvelles connexions peuvent échouer

Schéma montrant de multiples connexions à la base de données qui s'accumulent, 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 books: " + rs.getInt(1)); } }
  • Les connexions se ferment automatiquement
Interroger une base de données PostgreSQL en Java

Agrégat de connexions

  • Les nouvelles connexions répètent une config coûteuse
  • L'agrégat réutilise des connexions existantes
  • Les connexions retournent à l'agrégat une fois terminé

Une analogie avec une station de taxis

Schéma d'un agrégat de connexions avec plusieurs connexions préétablies, des flèches montrant l'emprunt et le retour

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("Connected with HikariCP!"); }
Interroger une base de données PostgreSQL en Java

Journal de console HikariCP

[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting...
[main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - 
    Added connection org.postgresql.jdbc.PgConnection@ID
[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed.
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...