来自db的流数据集

时间:2016-02-15 15:38:57

标签: java hibernate jpa

我看到了一个面试问题,询问如果这个数据集太大而不适合内存,如何从db处理数据集。 答案是:使用流。 好的,听起来很合理。 但究竟应该在Java中使用什么工具来实现呢? query.getResultList()一次获取整个列表,并且Query API中没有任何流。 如果不是JPA,也许Hibernate本身就有它? 谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在查询中使用分页来一次选择集。然后,一旦完成处理该集合,返回数据库并获取下一组。您可以将此功能包装在List界面中,并使其对列表界面的用户透明

您还可以使用可以为您执行此操作的框架,例如ActiveJDBC

在ActiveJDBC lite中,您可以使用ModelListener

答案 1 :(得分:0)

java sql包和相关实现(对于oracle,mysql等)具有Statement和ResultSet类。后者将迭代所获取的记录,而不会立即将它们全部拉入内存。多个db命中是这种方法的副作用,尽管它们对开发人员是透明的。