Olá pessoal!
Estou utilizando o Hibernate 3.2 em um projeto e gostaria de saber se tem uma forma de otimizar a inserção de mais de 1 milhão de registros importados de um arquivo csv.
O processo atual leva mais de 20 minutos para ser concluído.
Andei dando uma olhada em Batch Processing http://www.hibernate.org/hib_docs/reference/en/html/batch.html mas acho que não é bem isso que eu preciso para otimizar este processo.
Alguem poderia me dar uma luz?
Valeu!
Estou com um problema de performanse semelhante… vc consegui otimizar de alguma forma?
Olá amigo!
Pelo que eu me lembre, o que eu fiz foi dar flush na sessão do Hibernate conforme uma certa quantidade de registros tivesse sido persistida, No meu caso a cada 20 registros se não me engano.
O código era mais ou menos assim (Vou usar list mas no seu caso vc vai iterar no arquivo csv):
int count = 0;
List<LinhaDoArquivo> csv = new ArrayList<LinhaDoArquivo>()
for ( int x = 0; x < csv.size(); x++ ) {
session.persist( csv.get(x) );
if ( count % 20 == 0 ) {
session.flush();
}
count ++;
}
Espero ter ajudado.
[]'s
Ao invés de utilizar Session, utilize StatelessSession.
Blz? Flw! :thumbup:
Obrigado a todos…
implementei a estratégia de batch insert usando flush e clear a cada 1000 registros… estou pensando em fazer um teste usando StatelessSession tb.
Só não sei ao certo ainda como usar StatelessSession em EJB que é o meu caso.