This content originally appeared on DEV Community and was authored by Brayan Monteiro
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.
This content originally appeared on DEV Community and was authored by Brayan Monteiro

Brayan Monteiro | Sciencx (2025-03-06T22:24:59+00:00) CRUD Java, MySQL e JDBC. Retrieved from https://www.scien.cx/2025/03/06/crud-java-mysql-e-jdbc/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.