Manipular MUITOS Registros - JPA - J2SE

4 respostas
E

Galera, estamos desenvolvendo uma aplicação utilizando JPA (Toplink) em J2SE. Em um dos casos precisamos ler uma tabela, onde essa seleção trará mais de 1 milhão de registros, e fazer algumas verificações, validações em cada registro.

Porém pesquisei não encontrei nada que possibilitasse algum tratamento de step size ou paginação, para que não ocorra estouro de memória.

Alguém poderia me ajudar?

PS: Importante estamos utilizando JPA pois nossa aplicação pode ser executada em diferentes tipos de BD’s (+ de 6), utilizar direto JDBC será inviável.

Grato.

Eduardo :shock:

4 Respostas

T

No seu caso, talvez você tenha de amarrar um pouco seu produto ao TopLink. Você poderia usar Lazy Loading, talvez (não conheço JPA a fundo e não sei se isso é o recurso correto para seu problema).

http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-extensions.html#LazyLoading

gilliard_santos

Tanto na JPA como no hibernate, na interface Query tem os método setFirstResult(int) e setMaxResults(int) onde voce passa o primeiro resultado que voce quer listar e o máximo de resultados. Com isso voce consegue fazer a paginação dos dados.

plentz

Outra coisa importante pra seu problema. é você utilizar os recursos de batch,
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#batch

e escolher corretamente a estratégia de fetch
http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#performance-fetching-custom

E

Obrigado. As opções de setFirstResult(int) e setMaxResults(int) funcionaram certinho e vão atender. Estou dando uma pesquisada e fazendo alguns testes com esses outros dois tópicos de fetch e batch.

Obrigado.

Criado 13 de abril de 2007
Ultima resposta 16 de abr. de 2007
Respostas 4
Participantes 4