使用ScrollableResults在Hibernate中高效处理大数据

时间:2014-12-09 16:11:41

标签: hibernate scrollableresults

我了解了ScrollableResultsHibernate有效处理大数据的信息。

ScrollableResults results = session.createCriteria(Employee.class).scroll(); -- (1) 
while (results.next()) {  
    Object row = results.get(0);  
}

在上面运行时,我发现在语句(1)本身触发了select查询。是不是意味着表中的所有数据都被加载到内存中?如果不是这样,它是如何工作的?

有人可以解释一下。

1 个答案:

答案 0 :(得分:1)

是的,它会加载到内存中。您需要具有以下代码。

Query query = session.createQuery(query);
query.setReadOnly(true);
// MIN_VALUE gives hint to JDBC driver to stream results
query.setFetchSize(Integer.MIN_VALUE);
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY);
// iterate over results
while (results.next()) {
    Object row = results.get();
    // process row then release reference
    // you may need to flush() as well
}
results.close();

关注this博文,了解更多详情。