Com base no aprendizado da aula 02. Cadastro de informações, segue a configuração:
Classe ContaDAO.java
:
public class ContaDAO {
private Connection conn;
ContaDAO(Connection connection) {
this.conn = connection;
}
public void salvar(DadosAberturaConta dadosDaConta) {
var cliente = new Cliente(dadosDaConta.dadosCliente());
var conta = new Conta(dadosDaConta.numero(), BigDecimal.ZERO, cliente);
String sql = "INSERT INTO conta (numero, saldo, cliente_nome, cliente_cpf, cliente_email)" +
"VALUES (?, ?, ?, ?, ?)";
try {
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setInt(1, conta.getNumero());
preparedStatement.setBigDecimal(2, BigDecimal.ZERO);
preparedStatement.setString(3, dadosDaConta.dadosCliente().nome());
preparedStatement.setString(4, dadosDaConta.dadosCliente().cpf());
preparedStatement.setString(5, dadosDaConta.dadosCliente().email());
preparedStatement.execute();
preparedStatement.close();
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
Classe ContaService.java
:
public class ContaService {
//...
public void abrir(DadosAberturaConta dadosDaConta) {
Connection con = connection.recuperarConexao();
new ContaDAO(con).salvar(dadosDaConta);
}
//...
}
Só acho que ficaria mais organizado e menos código, se colocássemos o Connection con = connection.recuperarConexao();
dentro da classe ContaDAO
, assim, não precisaríamos colocar todas as vezes esse código, quando formos instanciar a classe new ContaDAO()
.