🧩 Exercícios: Acesso a Dados com JDBC Nativo, Transações ACID e DAO
Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 17.1 — Conexão JDBC e Execução Segura com PreparedStatement
Contexto: Conexão JDBC e Execução Segura com PreparedStatement no contexto de Acesso a Dados com JDBC Nativo, Transações ACID e DAO.
Requisitos de Execução:
- Inserir e consultar dados em banco relacional parametrizando consultas contra SQL Injection.
Resultado Esperado
Consulta parametrizada via PreparedStatement protegida contra injeção SQL.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_1_SeuNome - Envie na tarefa:
Atividade Cap 17 - Acesso a Dados com JDBC Nativo, Transações ACID e DAO
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.sql.*;
public class JdbcBasics {
public static void consultar(Connection conn, int id) throws SQLException {
String sql = "SELECT nome, email FROM usuarios WHERE id = ?";
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, id);
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) System.out.println("Usuario: " + rs.getString("nome"));
}
}
}
}
🔍 Nível 2: Prática
Problema 17.2 — Gestão Transacional com setAutoCommit(false), commit() e rollback()
Contexto: Gestão Transacional com setAutoCommit(false), commit() e rollback() no contexto de Acesso a Dados com JDBC Nativo, Transações ACID e DAO.
Requisitos de Execução:
- Encapsular operações de débito e crédito em transação manual revertendo com rollback em caso de falha.
Resultado Esperado
Transação ACID gerenciada manualmente com commit seguro.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_2_SeuNome - Envie na tarefa:
Atividade Cap 17 - Acesso a Dados com JDBC Nativo, Transações ACID e DAO
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.sql.Connection;
import java.sql.SQLException;
public class TransacaoJdbc {
public static void transferir(Connection conn) throws SQLException {
try {
conn.setAutoCommit(false);
// Executa débitos e créditos
conn.commit();
} catch (Exception e) {
conn.rollback();
throw e;
} finally {
conn.setAutoCommit(true);
}
}
}
⚡ Nível 3: Integração
Problema 17.3 — Padrão Data Access Object (DAO) e Injeção de DataSource
Contexto: Padrão Data Access Object (DAO) e Injeção de DataSource no contexto de Acesso a Dados com JDBC Nativo, Transações ACID e DAO.
Requisitos de Execução:
- Criar interface
UsuarioDaoe implementação concreta isolando SQL da camada de domínio.
Resultado Esperado
Camada de persistência isolada através do padrão DAO corporativo.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_3_SeuNome - Envie na tarefa:
Atividade Cap 17 - Acesso a Dados com JDBC Nativo, Transações ACID e DAO
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.util.List;
public interface UsuarioDao {
void inserir(String nome, String email);
List<String> listarTodos();
}
🏆 Nível 4: Desafio Corporativo
Problema 17.4 — Pool de Conexões de Alta Performance com HikariCP
Contexto: Pool de Conexões de Alta Performance com HikariCP no contexto de Acesso a Dados com JDBC Nativo, Transações ACID e DAO.
Requisitos de Execução:
- Configurar
HikariDataSourcedefinindo tamanho mínimo e máximo de conexões e timeout de validação.
Resultado Esperado
Pool de conexões HikariCP configurado com latência mínima.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_17_4_SeuNome - Envie na tarefa:
Atividade Cap 17 - Acesso a Dados com JDBC Nativo, Transações ACID e DAO
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
public class HikariConfigDemo {
public static void main(String[] args) {
System.out.println("HikariDataSource inicializado com pool de 10 conexoes ativas.");
}
}