Gestionarea conexiunilor la baze de date

Interogarea unei baze de date PostgreSQL în Java

Miller Trujillo

Staff Software Engineer

De ce contează gestionarea conexiunilor?

$$

  • Fiecare conexiune deschide un socket de rețea
  • Necesită autentificare și alocare de resurse
  • Conexiunile neînchise provoacă scurgeri de resurse
  • Conexiunile noi pot eșua

Diagramă ce ilustrează acumularea mai multor conexiuni la baze de date, unele marcate ca conexiuni „zombie" — deschise, dar neutilizate

Interogarea unei baze de date PostgreSQL în 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)); } }
  • Conexiunile sunt închise automat
Interogarea unei baze de date PostgreSQL în Java

Pool de conexiuni

  • Conexiunile noi repetă configurarea costisitoare
  • Pooling-ul reutilizează conexiunile existente
  • Conexiunile revin în pool după utilizare

Analogie cu o stație de taxiuri

Diagramă ce ilustrează un pool de conexiuni cu mai multe conexiuni pre-stabilite, cu săgeți care arată împrumutarea și returnarea conexiunilor

Interogarea unei baze de date PostgreSQL în Java

Exemplu 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!"); }
Interogarea unei baze de date PostgreSQL în Java

Jurnalul consolei 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.
Interogarea unei baze de date PostgreSQL în Java

Să exersăm!

Interogarea unei baze de date PostgreSQL în Java

Preparing Video For Download...