【发布时间】:2011-07-01 08:34:25
【问题描述】:
假设我有一个包含数百万行的表。使用 JPA,迭代针对该表的查询的正确方法是什么,以便 我没有包含数百万个对象的所有内存列表?
例如,如果表很大,我怀疑以下内容会爆炸:
List<Model> models = entityManager().createQuery("from Model m", Model.class).getResultList();
for (Model model : models)
{
System.out.println(model.getId());
}
分页(循环和手动更新setFirstResult()/setMaxResult())真的是最好的解决方案吗?
编辑:我定位的主要用例是一种批处理作业。如果需要很长时间运行,那很好。不涉及网络客户端;我只需要为每一行“做一些事情”,一次一个(或一些小的 N)。我只是想避免同时将它们全部存储在内存中。
【问题讨论】:
-
您使用的是什么数据库和 JDBC 驱动程序?