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

Mar 6, 2025 - 23:57
 0
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

  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.