Docker e aplicações
Drivers JDBC: o que são, como funcionam e quais usar em 2026
JDBC é a API padrão do Java para falar com bancos de dados, e o driver é o JAR que leva essas chamadas ao PostgreSQL, ao MySQL, ao MariaDB ou ao SQL Server. Veja como funciona, as versões atuais de cada driver, a URL de conexão, os erros mais comuns e o pool HikariCP, com testes reais.
- Por equipe técnica da Hospedagem Segura
- Atualizado em 10/10/2026
- 9 min de leitura
Texto do artigo
Neste artigo
- O que é JDBC e o que faz um driver JDBC
- Como o driver JDBC funciona: DriverManager, DataSource e URL
- Drivers JDBC atuais para MySQL, MariaDB, PostgreSQL e SQL Server
- Testando o driver JDBC com um programa mínimo
- Erros comuns com drivers JDBC
- Pool de conexões com HikariCP
- Onde rodar a aplicação Java e o banco
- Perguntas frequentes
JDBC (Java Database Connectivity) é a API padrão do Java para conversar com bancos de dados relacionais, e o driver JDBC é a biblioteca, um arquivo JAR, que faz essa conversa com um banco específico: PostgreSQL, MySQL, MariaDB ou SQL Server. Muita gente procura por "JBDC", com as letras trocadas; é o mesmo assunto, e o nome certo é JDBC.
Para uma aplicação Java acessar o banco, são duas peças: a API, que já vem no JDK (pacotes java.sql e javax.sql), e o driver do banco, que você adiciona ao projeto. O código usa sempre as mesmas interfaces (Connection, PreparedStatement, ResultSet) e o driver traduz cada chamada para o protocolo de rede do banco. Por isso, trocar de banco quase sempre se resume a trocar o driver e a URL de conexão.
O que é JDBC e o que faz um driver JDBC
A especificação em vigor é a JDBC 4.3, presente no Java desde a versão 9. Ela só define as interfaces; quem as implementa é o fabricante de cada banco. Os drivers atuais são do chamado tipo 4: escritos em Java puro, falam direto com o servidor pela rede e não dependem de biblioteca nativa instalada no sistema. O mesmo JAR funciona em Linux, Windows ou macOS.
O caminho de uma consulta é sempre este:
- A aplicação pede uma conexão informando a URL, o usuário e a senha.
- O driver abre a conexão TCP com o servidor do banco e faz a autenticação.
- A aplicação envia o SQL por um PreparedStatement e lê as linhas num ResultSet.
- A conexão é fechada ou devolvida ao pool de conexões.
Como o driver JDBC funciona: DriverManager, DataSource e URL
Há duas formas de pedir a conexão. A mais simples é o DriverManager: você chama DriverManager.getConnection(url, usuario, senha) e ele escolhe, entre os drivers carregados, o que aceita aquela URL. Desde o JDBC 4, o driver se registra sozinho quando o JAR está no classpath; o Class.forName("org.postgresql.Driver") dos tutoriais antigos não é mais necessário.
A outra é o DataSource, que a própria documentação do Java aponta como o meio preferido. Em aplicações de verdade, o DataSource costuma ser um pool, como o HikariCP, que mantém algumas conexões abertas e as reaproveita.
Quem identifica o banco é a URL, no formato jdbc:subprotocolo:endereço. Estes são os formatos dos quatro bancos mais comuns, com as portas padrão e a opção de SSL de cada driver:
jdbc:postgresql://198.51.100.20:5432/loja?sslmode=verify-full
jdbc:mysql://198.51.100.30:3306/loja?sslMode=REQUIRED
jdbc:mariadb://198.51.100.40:3306/loja?sslMode=verify-full
jdbc:sqlserver://198.51.100.50:1433;databaseName=loja;encrypt=trueO nome do parâmetro de SSL muda de driver para driver, e o padrão também: o pgJDBC usa prefer (criptografa se o servidor oferecer, sem validar o certificado), o Connector/J do MySQL usa PREFERRED e o driver da MariaDB vem com o SSL desligado. Usuário e senha ficam fora da URL: passe-os no getConnection, lidos de variáveis de ambiente ou de um arquivo de configuração com permissão restrita.
Drivers JDBC atuais para MySQL, MariaDB, PostgreSQL e SQL Server
Versões conferidas no Maven Central e na documentação de cada fabricante em outubro de 2026:
- PostgreSQL: pgJDBC 42.7.14 (org.postgresql:postgresql), para Java 8 ou mais novo. Saiu em 7/10/2026 com duas correções de segurança; quem usa uma 42.7.x anterior deve atualizar.
- MySQL: Connector/J 26.7.0 (com.mysql:mysql-connector-j). A numeração passou a acompanhar a do servidor MySQL, que agora usa ano e mês (26.7 = julho de 2026), e a 26.7.0 substitui a 9.7. Suporta MySQL 8.4 ou mais novo e Java 8 ou mais novo. As coordenadas antigas, mysql:mysql-connector-java, pararam na 8.0.33.
- MariaDB: MariaDB Connector/J 3.5.10 (org.mariadb.jdbc:mariadb-java-client), compatível com Java 8 a 25. A URL começa com jdbc:mariadb:.
- SQL Server: Microsoft JDBC Driver 13.6.0 (com.microsoft.sqlserver:mssql-jdbc), lançado em 10/09/2026. A versão termina em .jre11 para Java 11 ou mais novo, ou em .jre8 para Java 8.
Com Maven ou Gradle, basta declarar a dependência no projeto:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.14</version>
</dependency>Sem ferramenta de build, baixe o JAR direto do Maven Central e confira o hash publicado ao lado do arquivo antes de colocar em produção:

Testando o driver JDBC com um programa mínimo
Para saber se o driver, a rede e o usuário estão certos, nada melhor que um programa curto que conecta e pergunta a versão do banco. Este é o que usamos nos testes, com Java 21:
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class VersaoBanco {
public static void main(String[] args) throws Exception {
String url = System.getenv("DB_URL");
String usuario = System.getenv("DB_USER");
String senha = System.getenv("DB_PASSWORD");
try (Connection conn = DriverManager.getConnection(url, usuario, senha)) {
DatabaseMetaData meta = conn.getMetaData();
System.out.println("Driver: " + meta.getDriverName() + " " + meta.getDriverVersion());
System.out.println("JDBC: " + meta.getJDBCMajorVersion() + "." + meta.getJDBCMinorVersion());
System.out.println("Banco: " + meta.getDatabaseProductName() + " " + meta.getDatabaseProductVersion());
try (Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT version()")) {
rs.next();
System.out.println("SELECT version(): " + rs.getString(1));
}
}
}
}A URL, o usuário e a senha ficam num arquivo banco.env com permissão 600, carregado no shell antes de rodar. Assim a senha não aparece no código, no histórico do terminal nem na lista de processos do servidor.

O mesmo código, sem mudar uma linha, conecta ao MySQL e ao MariaDB. Mudam só a URL e o JAR no classpath:

Os três drivers informam JDBC 4.2, a versão da especificação que declaram implementar, e rodam normalmente no Java 21.
Erros comuns com drivers JDBC
No suitable driver found
Nenhum driver carregado aceitou a URL. As causas são quase sempre duas: o JAR não está no classpath (ou ficou de fora do pacote da aplicação) ou o prefixo da URL está errado. Para conferir, liste os drivers registrados com DriverManager.drivers():

O mesmo erro aparece quando se usa o driver da MariaDB com uma URL jdbc:mysql:. Desde a versão 3, ele só aceita esse prefixo com a opção permitMysqlScheme na URL.
Loading class com.mysql.jdbc.Driver. This is deprecated
É só um aviso: a classe do driver do MySQL agora é com.mysql.cj.jdbc.Driver. Melhor ainda é apagar a linha do Class.forName, porque o driver se registra sozinho.
Public Key Retrieval is not allowed
Acontece no MySQL 8.4 quando a conexão é feita sem SSL (sslMode=DISABLED) com um usuário que usa o método de autenticação padrão, caching_sha2_password. A correção é manter o SSL ligado. O parâmetro allowPublicKeyRetrieval=true também faz o erro sumir, mas manda o cliente aceitar a chave pública que o servidor enviar, sem verificação; deixe-o para redes de teste.
Pool de conexões com HikariCP
Abrir uma conexão custa caro: há o aperto de mão TCP, a negociação de SSL e a autenticação. Numa aplicação web, abrir uma por requisição pesa no tempo de resposta e pode esgotar o limite do banco (o max_connections do PostgreSQL vem com 100). O pool mantém algumas conexões abertas e as empresta ao código. O HikariCP é o mais usado: o Spring Boot o escolhe automaticamente quando ele está no projeto. A versão atual é a 7.1.0 (com.zaxxer:HikariCP), para Java 11 ou mais novo.
HikariConfig config = new HikariConfig();
config.setJdbcUrl(System.getenv("DB_URL"));
config.setUsername(System.getenv("DB_USER"));
config.setPassword(System.getenv("DB_PASSWORD"));
config.setPoolName("loja");
config.setMaximumPoolSize(5);
HikariDataSource ds = new HikariDataSource(config);Os padrões do HikariCP são 10 conexões no máximo, 30 segundos de espera por uma conexão livre e 30 minutos de vida para cada conexão. Some o tamanho do pool de todas as instâncias da aplicação e mantenha o total abaixo do limite do banco. O passo a passo completo, com SSL e os erros de conexão mais comuns, está no artigo sobre conexão PostgreSQL em Java.
Onde rodar a aplicação Java e o banco
Uma API em Java com banco próprio precisa de um servidor em que você instale a versão do Java que quiser, mantenha o banco escutando só onde deve e controle o firewall. Na mesma máquina, deixe o banco atendendo apenas em localhost; em máquinas separadas, libere a porta do banco só para o IP da aplicação. A VPS Linux da Hospedagem Segura entrega esse cenário com acesso root, armazenamento NVMe e IPv4 dedicado, com Ubuntu, Debian, AlmaLinux ou Rocky Linux. A administração e o backup ficam com você; se preferir receber a VPS pronta, com backups periódicos e ajuda técnica mensal, a opção é o VPS Assistido.
Perguntas frequentes
O que é JBDC?
JBDC é um erro de digitação comum de JDBC (Java Database Connectivity), a API padrão do Java para acessar bancos de dados. Quem busca "driver JBDC" ou "conexão JBDC" procura o driver JDBC do banco e a forma de conectar uma aplicação Java a ele.
Qual a diferença entre JDBC e driver JDBC?
JDBC é a API, o conjunto de interfaces que já vem no Java; o driver é a implementação dessa API para um banco específico, distribuída pelo fabricante como um JAR. Sem o driver do banco no classpath, a aplicação não consegue conectar.
Preciso usar Class.forName para carregar o driver JDBC?
Não. Desde o JDBC 4, os drivers se registram sozinhos pelo mecanismo de service provider do Java quando o JAR está no classpath. O Class.forName ainda funciona, mas é desnecessário.
O driver do MySQL funciona com MariaDB?
Use o driver de cada banco: MySQL Connector/J para MySQL e MariaDB Connector/J para MariaDB. A documentação do Connector/J 26.7 declara suporte ao MySQL 8.4 ou mais novo, e o driver da MariaDB usa a URL jdbc:mariadb: e só aceita jdbc:mysql: com a opção permitMysqlScheme.
Qual a versão mais recente do driver JDBC do PostgreSQL?
Em outubro de 2026, a versão mais recente do pgJDBC é a 42.7.14, de 7/10/2026, que corrigiu duas falhas de segurança das versões 42.7.x anteriores. Ela funciona com Java 8 ou mais novo e está no Maven Central como org.postgresql:postgresql.
Leia também
- Docker e aplicaçõesConexão PostgreSQL em Java: passo a passo com JDBC, SSL e poolDo pom.xml ao primeiro SELECT: como conectar uma aplicação Java ao PostgreSQL com o driver pgJDBC, guardar a senha fora do código, exigir SSL com verificação do certificado, usar o pool HikariCP e resolver Connection refused, password authentication failed e no pg_hba.conf entry.11 min de leitura10/10/2026
- Docker e aplicaçõesComo instalar Docker e Docker Compose no Ubuntu ServerO jeito recomendado de instalar o Docker em um servidor Ubuntu é pelo repositório oficial da Docker, que já traz o plugin do Compose. Veja o passo a passo e os cuidados de segurança.3 min de leitura10/10/2026
- Painéis de controleErro 916 no SQL Server: "The server principal is not able to access the database"O erro 916 aparece quando o usuário tenta ler um banco de dados ao qual não tem acesso. Em hospedagem compartilhada, quase sempre é o Management Studio consultando todos os bancos do servidor, não um problema no seu.3 min de leitura10/10/2026
Seu Java e seu banco, do seu jeito
VPS Linux com acesso root, armazenamento NVMe e IPv4 dedicado para rodar a aplicação Java e o banco de dados que você escolher.
