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.
Dr…


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

  1. Banco de dados MySQL instalado.
  2. Driver JDBC do MySQL (arquivo mysql-connector-java-X.X.XX.jar).
  3. 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

  1. Adicione o driver JDBC ao classpath (no Eclipse: Botão direito no projeto > Build Path > Configure Build Path > Libraries > Add JARs).
  2. Execute a classe Main.

Considerações

  1. Tratamento de Exceções: Use try-with-resources para garantir que conexões sejam fechadas automaticamente.
  2. Segurança: Use PreparedStatement para evitar SQL injection.
  3. Transações: Para operações críticas, adicione controle transacional com commit() e rollback().

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


Print Share Comment Cite Upload Translate Updates
APA

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/

MLA
" » CRUD Java, MySQL e JDBC." Brayan Monteiro | Sciencx - Thursday March 6, 2025, https://www.scien.cx/2025/03/06/crud-java-mysql-e-jdbc/
HARVARD
Brayan Monteiro | Sciencx Thursday March 6, 2025 » CRUD Java, MySQL e JDBC., viewed ,<https://www.scien.cx/2025/03/06/crud-java-mysql-e-jdbc/>
VANCOUVER
Brayan Monteiro | Sciencx - » CRUD Java, MySQL e JDBC. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/03/06/crud-java-mysql-e-jdbc/
CHICAGO
" » CRUD Java, MySQL e JDBC." Brayan Monteiro | Sciencx - Accessed . https://www.scien.cx/2025/03/06/crud-java-mysql-e-jdbc/
IEEE
" » CRUD Java, MySQL e JDBC." Brayan Monteiro | Sciencx [Online]. Available: https://www.scien.cx/2025/03/06/crud-java-mysql-e-jdbc/. [Accessed: ]
rf:citation
» CRUD Java, MySQL e JDBC | Brayan Monteiro | Sciencx | 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.

You must be logged in to translate posts. Please log in or register.