CRUD Java, MySQL e JDBC
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 read() { String sql = "SELECT * FROM usuarios"; List 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

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.