se nao puder tratar no proprio banco
tenta limitar o resultado
tipo uma paginação de 100 em 100 por exemplo
pq o que trava é carregar 7000 registros de um vez so
Blz pessoal obrigado pelas dicas… vou postar a lógica do código aqui.
obs. Estes 7.000 registros são gerados do ERP SAP e eu não entendo o porque de tantas verificações a serem feitas maissss, bom eles tinham isso desenvolvido em php utilizando SCRIPTCASE e agora estou migrando pra java.
detalhe( o que tem em php foi completamente modificado na versão que esta sendo feito em java )
Se eu faço a importação do arquivo sem utilizar transação eu dou a carga que for que não consome nada de memória só o processamento que vai la prá cima mais até ai blz.
O que está me ferrando é importar de 7.000 a 11.000 registros e no lopping da importação eu abrir consultas de verificações e fazer inserts.
Eu gostaria de aprender como é alocado isso na memória, pois a cada looping que é feito eu tenho lá os SQL’s com suas clausulas WHERE’s e estes me retorna um ResultSet e quando eu faço la if(resultSet.next()){} como fica isso na memória… Ele vai alocando na memória um resultSet em cada looping?
Se tiverem algum material para me passar agradeço.
Segue a lógica
// Depois de importado os registros para uma tabela temporaria 'gmd_razao' do banco de dados SQL SERVER é feito as seguintes verificações:
public static final String EXISTEM_REGISTROS = "SELECT * FROM gmd_razao";
PreparedStatement stmt = this.connection.prepareStatement(EXISTEM_REGISTROS);
ResultSet rs = stmt.executeQuery();
//percorro a tabela gmd_razao
while(rs.next()){
consulta1 (Select conta_contabil From gmd_contabil where conta_contabil = ?) // este parametro vem da tabela gmd_razao
consulta2 (Select conta_contabil From gmd_excecao where conta_contabil = ?) // este parametro vem da tabela gmd_razao
consulta3 (Select ccusto_analitico From gmd_excecao1 where ccusto_analitico = ?) // este parametro vem da tabela gmd_razao
consulta4 (Select conta_contabil From gmd_contabil where = conta_contabil = ?) // este parametro vem da tabela gmd_razao
//agora verifico
if(consulta1.next()){
if(consulta2.next()){
inserir1 (Instruções SQL para inserir os dados que estão vindo da tabela temporária)
}else{
if(consulta3.next()){
inserir2 (Instruções SQL para inserir os dados que estão vindo da tabela temporária)
}else{
if(consulta4.next()){
if(consulta5.next(){
inserir3 (Instruções SQL para inserir os dados que estão vindo da tabela temporária)
}else{
inserir4 (Instruções SQL para inserir os dados que estão vindo da tabela temporária)
}
}else{
inserir5 (Instruções SQL para inserir os dados que estão vindo da tabela temporária)
}
}
}
}
É mais ou menos isso ai pessoal de acordo com as exigências vou criando mais verificações…
Estava pensando em trabalhar com exceções utilizando try{}catch(){}…quando cair na exçeção ele faz a devida insert… ao invés de abrir vários if…