Gerenciando Conexões de Banco de Dados

Consultando um banco de dados PostgreSQL em Java

Miller Trujillo

Staff Software Engineer

Por que gerenciar conexões importa?

$$

  • Cada conexão abre um socket de rede
  • Requer autenticação e alocação de recursos
  • Conexões não fechadas causam vazamento de recursos
  • Novas conexões podem falhar

Um diagrama mostrando várias conexões de banco de dados se acumulando, com algumas marcadas como conexões "zumbis" que estão abertas mas não usadas

Consultando um banco de dados PostgreSQL em 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 de livros: " + rs.getInt(1)); } }
  • Conexões são fechadas automaticamente
Consultando um banco de dados PostgreSQL em Java

Pooling de Conexões

  • Conexões novas repetem configuração cara
  • Pooling reutiliza conexões existentes
  • Conexões retornam ao pool quando terminam

Uma analogia de ponto de táxi

Um diagrama mostrando um pool de conexões com várias conexões pré-estabelecidas, com setas mostrando conexões sendo emprestadas e devolvidas

Consultando um banco de dados PostgreSQL em Java

Exemplo 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("Conectado com HikariCP!"); }
Consultando um banco de dados PostgreSQL em Java

Logs do Console HikariCP

[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Iniciando...
[main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - 
    Conexão adicionada org.postgresql.jdbc.PgConnection@ID
[main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Início concluído.
Consultando um banco de dados PostgreSQL em Java

Vamos praticar!

Consultando um banco de dados PostgreSQL em Java

Preparing Video For Download...