Como eu faria a persistência no caso abaixo onde tenho um objeto curriculo o qual possui alguns atributos que são List
public void create(Curriculo curriculo) throws SQLException {
String campos;
String query;
PreparedStatement stmt;
ResultSet rs;
Long lastId = 0l;
campos = "objetivo, pretensaoSalarial, escolaridade, outraExperiencia," +
"outraLinguagem, outroBancoDados, outroBusinessIntelligence, " +
"outroErp, anexo";
query = "INSERT INTO curriculo (" + campos + ") " +
"VALUES (?,?,?,?,?,?,?,?,?)";
stmt = connection.prepareStatement(query);
stmt.setString(1, curriculo.getObjetivo());
stmt.setDouble(2, curriculo.getPretensaoSalarial());
stmt.setLong(3, curriculo.getEscolaridade().getId());
stmt.setString(4, curriculo.getOutraExperiencia());
stmt.setString(5, curriculo.getOutraLinguagem());
stmt.setString(6, curriculo.getOutroBancoDados());
stmt.setString(8, curriculo.getOutroBusinessIntelligence());
stmt.setString(9, curriculo.getOutroErp());
stmt.setString(10, curriculo.getAnexo());
// executa
stmt.execute();
stmt.close();
query = "SELECT MAX(id) FROM curriculo";
stmt = connection.prepareStatement(query);
rs = stmt.executeQuery();
if (rs.next()) {
lastId = rs.getLong(0);
}
rs.close();
stmt.close();
if (lastId != 0l) {
query = "INSERT INTO curriculo_categoria VALUES(?, ?)";
stmt = connection.prepareStatement(query);
for (int i = 0; i < curriculo.getExperiencias().size(); i++) {
stmt.clearParameters();
stmt.setLong(0, lastId);
stmt.setLong(1, curriculo.getExperiencias().get(i).getId());
stmt.execute();
}
// demais insercoes de colecao na tabela curriculo_categoria
stmt.close();
}
}
Qualquer contribuição já é bem-vinda!
Sei que utilizar o hibernate resolveria isto facilmente, mas como o projeto já está em andamento vou ter que persistir com DAOs SQL mesmo. E também porque quero matar de vez minhas dúvidas sobre isto.
