JPA:迭代大型结果集的正确模式是什么?
假设我有一个包含数百万行的表。使用 JPA,迭代针对该表的查询的正确方法是什么,这样我就没有包含数百万个对象的所有内存中列表?
例如,我怀疑如果表很大,以下内容会爆炸:
List<Model> models = entityManager().createQuery("from Model m", Model.class).getResultList();
for (Model model : models)
{
System.out.println(model.getId());
}
分页(循环和手动更新 /)真的是最佳解决方案吗?setFirstResult()
setMaxResult()
编辑:我针对的主要用例是一种批处理作业。如果运行时间很长,没关系。不涉及网络客户端;我只需要为每行“做点什么”,一次一个(或一些小N)。我只是试图避免将它们同时放在内存中。