假设我有一个有数百万行的表。使用 JPA,对该表进行查询迭代的正确方法是什么,以便使 I don't have all an in-memory List包含数百万个对象?
例如,我怀疑如果桌子太大,下面的内容就会爆炸:
List<Model> models = entityManager().createQuery("from Model m", Model.class).getResultList();
for (Model model : models)
{
System.out.println(model.getId());
}
分页(循环和手动更新 setFirstResult()
/setMaxResult()
)真的是最好的解决方案吗?
Edit : 我所针对的主要用例是一种批处理作业。如果要跑很长时间也没关系。没有 Web 客户端参与; 我只需要为每一行“做一些事情”,一次一个(或一些小 N)。我只是不想让它们同时出现在记忆里。