Na aula, o método listar fica desse jeito:
public Set<Conta> listar() {
Set<Conta> contas = new HashSet<>();
String sql = "SELECT * FROM conta";
try {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
while(resultSet.next()) {
Integer numero = resultSet.getInt(1);
BigDecimal saldo = resultSet.getBigDecimal(2);
String nome = resultSet.getString(3);
String cpf = resultSet.getString(4);
String email = resultSet.getString(5);
Cliente cliente = new Cliente(new DadosCadastroCliente(nome, cpf, email));
contas.add(new Conta(numero, cliente));
// DadosCadastroCliente dados = new DadosCadastroCliente(nome, cpf, email);
// Cliente cliente = new Cliente(dados);
// DadosAberturaConta aberturaConta = new DadosAberturaConta(numero, dados);
// contas.add(new Conta(aberturaConta.numero(), cliente));
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return contas;
}
Gostaria de falar sobre o comentário do código: foi uma implementação que eu fiz. Está correto essa abordagem também? Haja vista que eu pensei em primeiramente atribuir valores a DadosCadastroCliente e depois atribui-los a cliente, e em seguida atribuir valores a DadosAberturaConta para depois atribui-los a conta. (não seria exatemente esse o propósito dos Records DadosCadastroCliente e DadosAberturaConta??)