Dúvida em carregar lista

3 respostas
E

Pessoal,

estou precisando carregar uma lista com quase 1 milhão de objetos pra tratar esses 1 milhão e depois inserir esses 1 milhão em outra tabela…
tentei fazer isso e já na hora de carregar a lista com 1 milhão… já deu estouro de memória… agora estou carregando 200 tratantando e gravando esses 200 em outra tabela… e depois pego + 200 e faço a mesmoa coisa… más não sei até quando vai funcionar…
alguém tem uma idéia de como fazer isso sem dar merda… mesmo que demore bastante pra terminar… só não pode dar erro… considerando que não tenha erro de código apenas de memória

3 Respostas

oberilo

Oi cara, tranquilo . . .

Me diz uma coisa, tem nessecidade de carregar tudo de um vez?
Seria melhor carregar por demanda usando LIKE , isso ja faria um filtro no carregamento da lista .

E

então aberilo… na verdade não da pra eu usar like pq eu tenho que pegar todos os registro de uma tabela … e fazer uns tratamentos e inserir em outra…
então não estou mais carregando 1 milhão de objetos… agora estou carregando usando between na consulta(JPA) e carrego apenas 200 registros…
depois + 200 + 200 e assim por diante…
mas não entendo direito se isso está correto ou não… depois que carrego os 200 eu trato esses 200 e insiro em outra tabela… depois faço outra consulta usando between com mais 200 registros… e faço a mesmoa coisa…
eu não sei se posso fazer tanta consulta assim … não sei se está correto a maneira que estou fazendo…
por enquanto ja tratei inseri na nova tabela 70 mil registro e não deu pau nenhum ainda… mas será que vai aguentar até 1 milhão

int cont = 1, cont2 = 200;
		List<CcraiaClienteOferecimento> listClienteOferecimentos;
		List<CcraiaStatus> listCcraiaStatus = this.statusDelegate.getStatusOferecimento();
		
		for (int i = 0; i < 5000; i++) {
			listClienteOferecimentos = this.oferecimentoDelegate.findByCods(cont, cont2);
			this.oferecimentoDelegate.atualizaOferecimentoParaHistorico(listClienteOferecimentos, listCcraiaStatus); // aqui grava essa lista em outra tabela
			cont = cont + 200;
			cont2 = cont2  + 200; 
		}

vlw pela ajuda

E

alguem???

Criado 19 de outubro de 2010
Ultima resposta 19 de out. de 2010
Respostas 3
Participantes 2