Trabalhando com bancos de dados em Java: PostgreSQL e MongoDB para iniciantes
O desenvolvimento moderno em Java raramente ocorre sem interação com bancos de dados. Independentemente de você estar criando uma aplicação web, um serviço móvel ou um sistema corporativo, a habilidade de trabalhar com bancos de dados SQL e NoSQL é uma competência obrigatória. Neste artigo, vamos abordar como conectar-se ao PostgreSQL (banco de dados relacional) e ao MongoDB (banco de dados orientado a documentos) a partir do Java, executar operações básicas e evitar erros típicos.
O material é voltado para desenvolvedores iniciantes que já conhecem os fundamentos do Java (classes, métodos, exceções) e desejam aprender a trabalhar com dados. Todos os exemplos de código podem ser copiados e executados no seu ambiente de desenvolvimento.
1. Preparação do ambiente e dependências
Para trabalhar com bancos de dados em Java, você precisará adicionar as bibliotecas correspondentes. Usaremos o Maven para gerenciar as dependências. Se você usa Gradle ou outro gerenciador de build, o princípio será semelhante.
Dependências para PostgreSQL (via JDBC)
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.7.1</version></dependency>Dependências para MongoDB (driver oficial)
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.11.1</version></dependency>Após adicionar as dependências, atualize o projeto (Maven → Reload Project). Certifique-se de que os próprios bancos de dados estejam instalados e em execução (localmente ou via Docker).
2. Trabalhando com PostgreSQL em Java
PostgreSQL é um banco de dados relacional clássico. Para interagir com ele a partir do Java, usa-se JDBC (Java Database Connectivity). Vamos abordar o ciclo completo: conexão, criação de tabela, inserção e leitura de dados.
2.1. Conexão ao banco de dados
Criaremos uma classe PostgresConnector com um método para obter a conexão:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
public class PostgresConnector { private static final String URL = "jdbc:postgresql://localhost:5432/testdb"; private static final String USER = "postgres"; private static final String PASSWORD = "your_password";
public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); }}2.2. Criação de tabela e inserção de dados
Usamos Statement e PreparedStatement para executar consultas SQL:
import java.sql.*;
public class PostgresExample { public static void main(String[] args) { String createTableSQL = "CREATE TABLE IF NOT EXISTS users (" + "id SERIAL PRIMARY KEY, " + "name VARCHAR(100) NOT NULL, " + "email VARCHAR(100) UNIQUE NOT NULL)";
String insertSQL = "INSERT INTO users (name, email) VALUES (?, ?)";
try (Connection conn = PostgresConnector.getConnection(); Statement stmt = conn.createStatement()) {
// Criamos a tabela stmt.execute(createTableSQL); System.out.println("Tabela users criada (ou já existe).");
// Inserimos dados via PreparedStatement (seguro contra SQL injection) try (PreparedStatement pstmt = conn.prepareStatement(insertSQL)) { pstmt.setString(1, "Ivan Petrov"); pstmt.setString(2, "ivan@example.com"); pstmt.executeUpdate(); System.out.println("Usuário adicionado."); }
} catch (SQLException e) { e.printStackTrac