Olá guj…
estou postando um trecho de uma de minhas classes DAO ( infelizmente nao consegui atualizar pra hibernate ainda )… enfim, gostaria que quem tiver saco pra olhar, me desse alguma dica de como eu poderia melhorá-la…
public void cadastrar(CaracteristicaIndividuo caracteristica,
RegistroCriminal registroCriminal, Connection conn)
throws Exception {
PreparedStatement stmt = null;
StringBuffer sql = null;
try {
if ( caracteristica.getId() < 0 ) {
sql = new StringBuffer();
sql.append(" SELECT MAX(CD_CARACTERISTICA_INDIVIDUO) AS CONTADOR FROM RCR_CARACTERISTICAS_INDIVIDUO ");
sql.append(" WHERE CD_REGISTRO_CRIMINAL = ? ");
stmt = conn.prepareStatement(
sql.toString());
stmt.setLong(1, registroCriminal.getId());
ResultSet rs = stmt.executeQuery();
rs.next();
caracteristica.setId( rs.getInt("CONTADOR") + 1 );
}
sql = new StringBuffer();
sql.append(" INSERT INTO RCR_CARACTERISTICAS_INDIVIDUO");
sql.append(" ( CD_REGISTRO_CRIMINAL");
sql.append(" , CD_GRUPO_CARACTERISTICA");
sql.append(" , CD_TIPO_CARACTERISTICA");
sql.append(" , CD_CARACTERISTICA");
sql.append(" , CD_CARACTERISTICA_INDIVIDUO");
sql.append(" , DS_CARACTERISTICAS");
sql.append(" , DT_CADASTRO");
sql.append(" , ST_INFORMACAO)");
sql.append(" VALUES(?,?,?,?,?,?,?,?)");
stmt = conn.prepareStatement(sql.toString());
stmt.setLong(1, registroCriminal.getId());
stmt.setLong(2, caracteristica.getGrupoCaracteristica().getId());
stmt.setLong(3, caracteristica.getTipoCaracteristica().getId());
stmt.setLong(4, caracteristica.getCaracteristica().getId());
stmt.setLong(5, caracteristica.getId());
stmt.setString(6, caracteristica.getDescricao());
stmt.setTimestamp(7, caracteristica.getData());
stmt.setString(8, "A");
stmt.execute();
} catch (Exception e) {
if( e.getMessage() != null && e.getMessage().contains("violation of PRIMARY or UNIQUE KEY")){
throw new Exception("Não é possível inserir a mesma característica.");
} else {
throw new Exception("Erro ao inserir característica. " + e.getMessage());
}
} finally {
try {
if ( stmt != null )
stmt.close();
} catch ( Exception e ) {
throw e;
}
}
}
Abraços