Hantera databasanslutningar

Fråga en PostgreSQL-databas i Java

Miller Trujillo

Staff Software Engineer

Varför spelar anslutningshantering roll?

$$

  • Varje anslutning öppnar en nätverkssocket
  • Kräver autentisering och resursallokering
  • Ej stängda anslutningar orsakar resursläckor
  • Nya anslutningar kan misslyckas

Ett diagram som visar flera databasanslutningar som hopar sig, där vissa är märkta som "zombie"-anslutningar – öppna men oanvända

Fråga en PostgreSQL-databas i 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)); } }
  • Anslutningar stängs automatiskt
Fråga en PostgreSQL-databas i Java

Anslutningspooling

  • Nya anslutningar kräver kostsam initieringskonfiguration
  • Anslutningspooling återanvänder befintliga anslutningar
  • Anslutningar återlämnas till poolen när de är klara

En analogi med en taxistation

Ett diagram som visar en anslutningspool med flera företablerade anslutningar, med pilar som illustrerar hur anslutningar lånas och återlämnas

Fråga en PostgreSQL-databas i Java

HikariCP-exempel

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!"); }
Fråga en PostgreSQL-databas i Java

HikariCP-konsolloggning

[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.
Fråga en PostgreSQL-databas i Java

Nu kör vi en övning!

Fråga en PostgreSQL-databas i Java

Preparing Video For Download...