Disons que j'ai une table avec des millions de lignes. En utilisant JPA, ce est la bonne façon d'effectuer une itération sur une requête sur la table, de telle sorte que je n'ai pas tout en mémoire une Liste avec des millions d'objets?
Par exemple, je pense que la suite va exploser si la table est grande:
List<Model> models = entityManager().createQuery("from Model m", Model.class).getResultList();
for (Model model : models)
{
System.out.println(model.getId());
}
Est pagination (en boucle et la mise à jour manuellement setFirstResult()
/setMaxResult()
) vraiment la meilleure solution?
Edit: le principal cas d'utilisation je suis le ciblage est une sorte de lot de travail. C'est bien si il prend du temps pour s'exécuter. Il n'y a pas de client web de cause; j'ai juste besoin de "faire quelque chose" pour chaque ligne, une (ou plusieurs petits N) à la fois. Je suis juste essayer d'éviter de les avoir tous en mémoire en même temps.