Vou criar um guia CRUD (Create, Read, Update, Delete) em Java puro (usando JDBC para conexão com banco de dados). Usaremos o MySQL como exemplo, mas você pode adaptar para outros bancos.
Pré-requisitos
- Banco de dados MySQL instalado.
- Driver JDBC do MySQL (arquivo
mysql-connector-java-X.X.XX.jar
). - Java 8 ou superior.
Passo 1: Configurar o Banco de Dados
Crie uma tabela usuarios
no MySQL:
CREATE DATABASE crud_java;
USE crud_java;
CREATE TABLE usuarios (
id INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL UNIQUE,
idade INT
);
Passo 2: Estrutura do Projeto Java
Crie um projeto Java e adicione o driver JDBC ao classpath (dependência).
src
└── main
└── java
├── ConnectionFactory.java
├── UsuarioDAO.java
└── Main.java
Passo 3: Código Java
Classe ConnectionFactory
(Conexão com o Banco)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
private static final String URL = "jdbc:mysql://localhost:3306/crud_java";
private static final String USER = "root";
private static final String PASSWORD = "sua_senha";
public static Connection getConnection() {
try {
return DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
throw new RuntimeException("Erro ao conectar ao banco de dados", e);
}
}
}
Classe UsuarioDAO
(Operações CRUD)
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UsuarioDAO {
// CREATE
public void create(Usuario usuario) {
String sql = "INSERT INTO usuarios (nome, email, idade) VALUES (?, ?, ?)";
try (Connection conn = ConnectionFactory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, usuario.getNome());
stmt.setString(2, usuario.getEmail());
stmt.setInt(3, usuario.getIdade());
stmt.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException("Erro ao criar usuário", e);
}
}
// READ
public List<Usuario> read() {
String sql = "SELECT * FROM usuarios";
List<Usuario> usuarios = new ArrayList<>();
try (Connection conn = ConnectionFactory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
Usuario usuario = new Usuario(
rs.getInt("id"),
rs.getString("nome"),
rs.getString("email"),
rs.getInt("idade")
);
usuarios.add(usuario);
}
} catch (SQLException e) {
throw new RuntimeException("Erro ao listar usuários", e);
}
return usuarios;
}
// UPDATE
public void update(Usuario usuario) {
String sql = "UPDATE usuarios SET nome = ?, email = ?, idade = ? WHERE id = ?";
try (Connection conn = ConnectionFactory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, usuario.getNome());
stmt.setString(2, usuario.getEmail());
stmt.setInt(3, usuario.getIdade());
stmt.setInt(4, usuario.getId());
stmt.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException("Erro ao atualizar usuário", e);
}
}
// DELETE
public void delete(int id) {
String sql = "DELETE FROM usuarios WHERE id = ?";
try (Connection conn = ConnectionFactory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, id);
stmt.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException("Erro ao deletar usuário", e);
}
}
}
Classe Usuario
(Modelo)
public class Usuario {
private int id;
private String nome;
private String email;
private int idade;
// Construtor, getters e setters
public Usuario(int id, String nome, String email, int idade) {
this.id = id;
this.nome = nome;
this.email = email;
this.idade = idade;
}
// Getters e Setters
public int getId() { return id; }
public String getNome() { return nome; }
public String getEmail() { return email; }
public int getIdade() { return idade; }
}
Classe Main
(Teste)
import java.util.List;
public class Main {
public static void main(String[] args) {
UsuarioDAO usuarioDAO = new UsuarioDAO();
// CREATE
Usuario novoUsuario = new Usuario(0, "João Silva", "joao@email.com", 30);
usuarioDAO.create(novoUsuario);
// READ
List<Usuario> usuarios = usuarioDAO.read();
for (Usuario u : usuarios) {
System.out.println(u.getId() + " - " + u.getNome());
}
// UPDATE
Usuario usuarioAtualizado = new Usuario(1, "João Silva Atualizado", "joao.novo@email.com", 35);
usuarioDAO.update(usuarioAtualizado);
// DELETE
usuarioDAO.delete(1);
}
}
Passo 4: Execução
- Adicione o driver JDBC ao classpath (no Eclipse: Botão direito no projeto > Build Path > Configure Build Path > Libraries > Add JARs).
- Execute a classe
Main
.
Considerações
-
Tratamento de Exceções: Use
try-with-resources
para garantir que conexões sejam fechadas automaticamente. -
Segurança: Use
PreparedStatement
para evitar SQL injection. -
Transações: Para operações críticas, adicione controle transacional com
commit()
erollback()
.
Este é um exemplo básico. Para projetos reais, considere usar:
- Frameworks como Hibernate (JPA) ou Spring JDBC.
- Pool de conexões (ex: HikariCP).
- Tratamento mais robusto de exceções.
Top comments (0)