Bom dia pessoal.
Apesar de já programar Java faz tempo, estou começando no pattern [url=“http://www.javafree.org/content/view.jf?idContent=183”]DAO[/URL] agora… o que estou tentando fazer é, com base em um objeto, inserir ele no banco, pegar a ID que ele ficou (no caso, essa id é a PK), setar a ID no objeto e retorná-lo. Só que eu quero fazer isso com JDBC, pois é um programa pequeno (~3MB, com as libs), e usar algum framework como Hibernate iria gerar um overhead muito grande.
Minha idéia era que a camada DAO tivesse alguns métodos mais ou menos assim:
public UmObjeto inserir(UmObjeto o) {
PreparedStatement st = QueryManager.getPreparedStatement("insert");
try {
st.setInt(1, o.getAtributo()); // mais algumas linhas assim
st.executeUpdate();
// aqui que está a dúvida!!
o.setIdNoBanco( ? ? ? );
return o;
} catch (final SQLException e) {
this.log.warn(e.getMessage(), e);
return null;
}
}
public UmObjeto salvar(UmObjeto o) {
PreparedStatement st = QueryManager.getPreparedStatement("save");
try {
st.setInt(1, o.getAtributo()); // mais uma linha assim
st.setInt(3, o.getIdNoBanco()); // pega a ID do objeto no banco e define no sql
st.executeUpdate();
return o;
} catch (final SQLException e) {
this.log.warn(e.getMessage(), e);
return null;
}
}
Onde os SQLs dos PreparedStatements são:
insert= INSERT INTO Transfer(serverid, serverurl, transfersize, hits_last_hour, hits_total, register_time) VALUES(?, ?, ?, ?, ?, ?);
save= UPDATE Transfer SET hits_last_hour=?, hits_total=? WHERE idTransfer=?
No caso, estou usando o HSQLDB. Passei a tarde de ontem procurando sobre isso, mas a maior parte das pessoas usa alguma implementação do JPA, então não achei exemplo algum de como fazer o que eu quero…