1
resposta

Fiquei confuso

Não entendi esta parte da classe ProdutoDAO qual o ponto a provar utilizando uma lista como o retorno do metodo? Poderia no proprio listar realizar o print?

    public List<Produto> listar() throws SQLException {
        List<Produto> produtos = new ArrayList<Produto>();

        String sql = "SELECT ID, NOME, DESCRICAO FROM produto";

        try(PreparedStatement pstm = connection.prepareStatement(sql)) {
            pstm.execute();

            try(ResultSet rst = pstm.getResultSet()) {
                while(rst.next()) {
                    Produto produto = new Produto(rst.getInt(1), rst.getString(2), rst.getString(3));
                    produtos.add(produto);
                }
            }

        }
        return produtos;

    }

Pra mim seria muito mais pratico pegar o codigo ja pronto da classe TestaListagem é mais simples e menos complexo ao meu ver:

    public void listar() throws SQLException{
        PreparedStatement stm = connection.prepareStatement("SELECT ID, NOME, DESCRICAO FROM produto");
        stm.execute();
        ResultSet rst = stm.getResultSet();

        while (rst.next()) {
            int id = rst.getInt("ID");
            String nome = rst.getString("nome");
            String descricao = rst.getString("descricao");
            System.out.println(id + "- " + nome + " " + descricao);
        }

    }

Estou perdendo alguma coisa no caminho galera? Não entendi o real sentido deste primeiro codigo. Alguem pode me ajudar?

1 resposta

Vinicius, boa tarde. Seria pensando na responsabilidade de cada classe. A ideia da DAO é acessar o banco de dados e retornar as infos para a classe que irá mostrar, que no nosso caso são as mains. Com o código que vc fez, a gente acaba colocando mais responsabilidade na DAO, que seria busca no banco, além de mostrar a info para o usuário.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software