Trabalho com bancos de dados em Java: PostgreSQL e MongoDB para iniciantes
\n\nNo desenvolvimento moderno em Java, a habilidade de trabalhar com bancos de dados (BD) é uma das competências essenciais. Independentemente de você estar criando uma aplicação web, um serviço móvel ou um sistema corporativo, precisará armazenar, recuperar e processar dados. Neste artigo, abordaremos dois sistemas populares de gerenciamento de bancos de dados (SGBD): o relacional PostgreSQL e o orientado a documentos MongoDB. Você aprenderá como se conectar a eles a partir de uma aplicação Java, realizar operações básicas e entenderá em quais casos escolher uma ou outra tecnologia. O material é voltado para desenvolvedores iniciantes, portanto, todos os exemplos de código são extremamente simples e acompanhados de comentários.
\n\n1. Fundamentos do trabalho com PostgreSQL em Java
\n\nPostgreSQL é um poderoso SGBD objeto-relacional de código aberto. Para interagir com ele a partir do Java, utiliza-se o driver JDBC (Java Database Connectivity). Vamos analisar o processo passo a passo de conexão e execução de consultas.
\n\n1.1. Conexão do driver e configuração
\n\nPrimeiramente, é necessário adicionar a dependência ao seu projeto. Se você usa Maven, adicione o seguinte bloco ao pom.xml:
<dependency>\n <groupId>org.postgresql</groupId>\n <artifactId>postgresql</artifactId>\n <version>42.7.1</version>\n</dependency>\n\nPara Gradle, adicione a linha ao build.gradle:
implementation 'org.postgresql:postgresql:42.7.1'\n\n1.2. Criação de tabela e inserção de dados
\n\nSuponha que temos um banco de dados testdb com o usuário user e a senha pass. Vamos criar uma tabela simples users e adicionar alguns registros.
import java.sql.*;\n\npublic class PostgresExample {\n public static void main(String[] args) {\n String url = "jdbc:postgresql://localhost:5432/testdb";\n String user = "user";\n String password = "pass";\n\n try (Connection conn = DriverManager.getConnection(url, user, password);\n Statement stmt = conn.createStatement()) {\n\n // Criação da tabela\n String createTableSQL = "CREATE TABLE IF NOT EXISTS users (" +\n "id SERIAL PRIMARY KEY, " +\n "name VARCHAR(100) NOT NULL, " +\n "email VARCHAR(100) UNIQUE)";\n stmt.executeUpdate(createTableSQL);\n System.out.println("Tabela criada ou já existe.");\n\n // Inserção de dados\n String insertSQL = "INSERT INTO users (name, email) VALUES " +\n "('Ivan Petrov', 'ivan@example.com'), " +\n "('Maria Smirnova', 'maria@example.com')";\n int rowsInserted = stmt.executeUpdate(insertSQL);\n System.out.println("Linhas inseridas: " + rowsInserted);\n\n } catch (SQLException e) {\n e.printStackTrace();\n }\n }\n}\n\n1.3. Leitura de dados com PreparedStatement
\n\nPara trabalhar de forma segura com entrada do usuário, utilize PreparedStatement. Isso previne injeções SQL.
String selectSQL = "SELECT * FROM users WHERE name LIKE ?";\ntry (PreparedStatement pstmt = conn.prepareStatement(selectSQL)) {\n pstmt.setString(1, "%Ivan%");\n ResultSet rs = pstmt.executeQuery();\n\n while (rs.next()) {\n int id = rs.getInt("id");\n String name = rs.getString("name");\n String email = rs.getString("email");\n System.out.println("ID: " + id + ", Nome: " + name + ", Email: " + email);\n }\n} catch (SQLException e) {\n e.printStackTrace();\n}\n\nComo você pode ver, o trabalho com PostgreSQL em Java é padrão e bem documentado