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:

  1. 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)

  1. Salve o arquivo como: Atividade_17_1_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_17_2_SeuNome
  2. 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:

  1. Criar interface UsuarioDao e 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)

  1. Salve o arquivo como: Atividade_17_3_SeuNome
  2. 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:

  1. Configurar HikariDataSource definindo 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)

  1. Salve o arquivo como: Atividade_17_4_SeuNome
  2. 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.");
    }
}