Jdbc

CRUD

IMG

CRUD são as quatro operações básicas do desenvolvimento de uma aplicação, sendo utilizadas em bases de dados relacionais fornecidas aos utilizadores do sistema

Então a sigla CRUD é um acrônimo, de quatro operações básicas, são elas:

  • Create – Criar um novo registro.
  • Read – Ler um registro, ou uma lista de registros.
  • Update – Atualizar um registro.
  • Delete – Excluir um registro.

Contexto

Vamos imaginar que seu programa precisará realizar as quatro operações de CRUD direcionadas a uma tabela de profissões contendo os campos: Codigo e Nome, qual seria a abordagem inicial para a realização deste tarefa?

DDL para a tabela profissão

-- POSTGRES
CREATE TABLE tab_profissao (
  codigo      int4           NOT NULL,
  nome        varchar(50)   NOT NULL
);
  1. Vamos criar a classe que representará a estrutura dos objetos de profissão:
Profissao.java
public class Profissao {
    public Integer codigo;
    public String nome;
}
  1. Agora criar a nossa classe que representará o papel de realizar estas operações:
ProfissaoJdbc.java
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class ProfissaoJdbc {
    //estava variável será útil em toda a classe
    private Connection conexao;

    public ProfissaoCrud() {
        //ao criar o objeto, uma conexão será informada uma única vez
        conexao = FabricaoConexao.getConexao();
    }
}
  1. Implementar as quatro operações correspondentemente:
ProfissaoJdbc.java
public void save (Profissao profissao){
  try {
    String sql = "INSERT INTO tab_profissao (codigo, nome) VALUES (?,?)";

    PreparedStatement statement = conexao.prepareStatement(sql);
    statement.setString(1, profissao.codigo);
    statement.setString(2, profissao.nome);

    int rowsInserted = statement.executeUpdate();
    if (rowsInserted > 0) {
      System.out.println("Uma nova profissao foi salva com sucesso!");
    }

  }catch (Exception ex){
    ex.printStackTrace();
  }
}

public void update(Profissao profissao){
  try {
    String sql = "UPDATE tab_profissao SET nome = ? WHERE codigo = ?";

    PreparedStatement statement = conexao.prepareStatement(sql);
    statement.setString(1, profissao.nome);
    statement.setInt(2, profissao.codigo);
    int rowsUpdated = statement.executeUpdate();
    if (rowsUpdated > 0) {
      System.out.println("Profissão alterada com sucesso!");
    }

  }catch (Exception ex){
    ex.printStackTrace();
  }
}

public int delete(Integer id){
  int rowsDeleted=0;
  try {
    String sql = "DELETE FROM tab_profissao WHERE codigo = ?";

    PreparedStatement statement = conexao.prepareStatement(sql);
    statement.setInt(1, id);
    rowsDeleted = statement.executeUpdate();
  }catch (Exception ex){
    ex.printStackTrace();
  }
  return  rowsDeleted;
}

public Profissao findById(Integer id){
  Profissao profissao = null;
  try {
    String sql = "SELECT * FROM tab_profissao WHERE codigo = ?";

    PreparedStatement statement = conexao.prepareStatement(sql);
    statement.setInt(1,id);

    ResultSet result = statement.executeQuery();

    while (result.next()){
       profissao = new Profissao();
      profissao.codigo = result.getInt("codigo");
      profissao.nome = result.getString("nome");
    }
  }catch (Exception ex){
    ex.printStackTrace();
  }
  return profissao;
}

public List<Profissao> findAll(){
  List<Profissao> registros = new ArrayList<>();
  try {
    String sql = "SELECT * FROM tab_profissao";
    Statement statement = conexao.createStatement();
    ResultSet result = statement.executeQuery(sql);
    while (result.next()){
      Profissao profissao = new Profissao();
      profissao.codigo = result.getInt("codigo");
      profissao.nome = result.getString("nome");
      registros.add(profissao);
    }
  }catch (Exception ex){
    ex.printStackTrace();
  }
  return registros;
}
🔔 Atenção
A razão pela qual o nome dos métodos foram padronizados no idioma inglês é devido a tendência de aprimoramento deste aspecto de persistência onde fará muito mais sentido quando formos abordar Spring Data Jpa 🤩.

Referências