Jdbc
CRUD
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
);
- Vamos criar a classe que representará a estrutura dos objetos de profissão:
Profissao.java
public class Profissao {
public Integer codigo;
public String nome;
}
- 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();
}
}
- 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 🤩.
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