来自db的Spring MVC + hibernate批量加载

时间:2014-03-24 14:31:08

标签: java spring hibernate

对不起家伙,如果这是一个微不足道的问题,但我想弄清楚正确的方法。有一个大表“帐户”(约10000个条目)。我想迭代它通过实体做一些逻辑并在需要时将其合并。但我不想在内存中加载所有条目。

目前我这样做

List<Account> accounts = accountsDAO.all();
for (Account a: accounts) {
  doSomeCode(a);
  accountsDAO.merge(a);
}

我该如何改进?

1 个答案:

答案 0 :(得分:1)

请查看setFirstResultsetMaxResults,而不是手动执行,并使用非常明确的查询(请参阅SQL&#39; s LIMIT子句)。

还有setFetchSize让驱动程序/数据库分块无限查询的结果(example in the PostgreSQL JDBC docs)。 ScrollableResults似乎非常相似(至少关于用法):你得到一个结果迭代器来滚动匹配的记录(example in a random blog post)。

至于我的问题您正在使用哪个数据库:数据库和/或驱动程序之间存在差异。我不知道这里的具体细节,但有关加载块的一些功能必须由相应的DB驱动程序支持。