Toplink - update de muitos registros - melhores práticas?

3 respostas
lcn.andre

Tenho uma dúvida:
Se eu tiver que dar update em 10.000 registros numa tabela com o Toplink, qual a melhor forma de fazer isso sem travar tudo?

No momento faço deste jeito e ainda sim trava todo o meu sistema:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("meuPU"); EntityManager em = emf.createEntityManager(); // for (MinhaClasse objeto: listaDezMilItens) { em.getTransaction.begin(); objeto.setCampoQualquer("valor qualquer"); em.merge(objeto); em.getTransaction.commit(); em.clear(); }

Alguma idéia?

3 Respostas

janjan

coloca numa thread e faz o usuario esperar, pois quem quiser utilizar a tabela que esta recebendo o update ficará trancado também…
e já que é um processo demorado assim, sugiro rodar ele somente a noite, ou meio dia!!

lcn.andre

Não tem como rodar isso somente uma vez por dia, pois faz parte da rotina de venda de produtos. Mesmo com thread demoraria demais para gravar todos os registros. Já estou começando a entrar em desespero por causa disso. :shock:

janjan

já que é um update tão demorado, faz ele no braço, monta a query, e grava no banco…
o hibernate(no meu ponto de vista) em alguns casos pode ser lento…
Q ele pode estar fazendo coisas desnecessárias!!
e se vc montar a query… saberá oque tá fazendo!!!

Criado 2 de fevereiro de 2011
Ultima resposta 3 de fev. de 2011
Respostas 3
Participantes 2