Olá. Estou utilizando o hibernate + jpa em uma aplicação minha.
Antes de poder utilizar a aplicação, eu preciso carregar algumas tabelas com dados.
Em algumas dessas tabelas, o carregamento inicial chega a 200.000 linhas.
Funciona tudo sem erro, porém de um determinado momento em diante, o desempenho cai vertiginosamente e ai o insert demora horas…
Meu código está assim:
for (X x : xs) {
em.getTransaction().begin();
for(int j = 0; j < maxJ; j++) {
c = new C();
c.set1("zzzZZZzzz");
c.set2(x);
em.persist(c);
if(j % 20 == 0)
em.flush();
}
em.getTransaction().commit();
}
em.close();
Obs: aquele maxJ pode chegar a 200.000
No meu persistence.xml coloquei a segunda propriedade para otimizar os inserts:
<property name="hibernate.jdbc.batch_size" value="20"/>
Alguém tem alguma sugestão para melhorar isso?