1
resposta

Duvida

oi, gostaria de saber se tem diferença ou inconveniente, o código que fiz e o resultado do exercicio

Eu não atribui o resultado de resultset para dentro de variaveis antes de a Categoria:

try(ResultSet rs = stmt.getResultSet()){
    while (rs.next()) {
        Categoria categoria = new Categoria(rs.getInt("id"), rs.getString("nome"));
        categorias.add(categoria);
    }
}

No vosso exemplo está assim:

try(ResultSet rs = stmt.getResultSet()) {
    while(rs.next()) {
            int id = rs.getInt("id");
                String nome = rs.getString("nome");
                Categoria categoria = new Categoria(id, nome);
                categorias.add(categoria);
        }
}
1 resposta

Filipe, não há nada de errado na sua implementação. Na verdade, ela é até a implementação preferida, pois assim você evita instanciar mais atributos que são apenas temporários e desnecessários. É melhor já instanciar o seu objeto passando os valores direto pra ele. Há até um nome para esse pattern, é o Good Citizen, que consiste em instanciar um objeto já com todos os atributos sem os quais ele não faz sentido existir sem. Por exemplo: faz sentido instanciar um objeto Funcionario sem o nome? Não! Pois todo funcionário tem um nome. Instanciar um objeto do tipo Carro sem o modelo? Também não, pois todo carro é de um modelo. Então, nesses casos, você já instancia os objetos informando quais são os atributos necessários, ou seja, o mínimo de atributos para que esse objeto faça sentido.

Espero ter ajudado.

Abraço.