Gestione delle connessioni al database

Eseguire query su un database PostgreSQL in Java

Miller Trujillo

Staff Software Engineer

Perché è importante gestire le connessioni?

$$

  • Ogni connessione apre un socket di rete
  • Richiede autenticazione e risorse
  • Connessioni non chiuse causano perdite di risorse
  • Nuove connessioni potrebbero fallire

Un diagramma che mostra più connessioni al database che si accumulano, con alcune contrassegnate come connessioni "zombie" che sono aperte ma non utilizzate

Eseguire query su un database PostgreSQL in 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)); } }
  • Le connessioni si chiudono automaticamente
Eseguire query su un database PostgreSQL in Java

Pooling delle connessioni

  • Nuove connessioni ripetono setup costosi
  • Il pooling riutilizza connessioni esistenti
  • Le connessioni tornano al pool quando finite

Un'analogia con una stazione di taxi

Un diagramma che mostra un pool di connessioni con più connessioni pre-stabilite, con frecce che mostrano le connessioni prese in prestito e restituite

Eseguire query su un database PostgreSQL in Java

Esempio 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("Connesso con HikariCP!"); }
Eseguire query su un database PostgreSQL in Java

Log console HikariCP

[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Avvio...
[main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - 
    Connessione aggiunta org.postgresql.jdbc.PgConnection@ID
[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Avvio completato.
Eseguire query su un database PostgreSQL in Java

Ayo berlatih!

Eseguire query su un database PostgreSQL in Java

Preparing Video For Download...