【问题标题】:Efficiently handling large data in Hibernate using ScrollableResults使用 ScrollableResults 在 Hibernate 中高效处理大数据
【发布时间】:2015-02-07 14:51:36
【问题描述】:

我在Hibernate 中了解到ScrollableResults 用于有效处理大数据。

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

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

谁能解释一下。

【问题讨论】:

标签: hibernate scrollableresults


【解决方案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博文了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2012-04-30
    • 2014-03-16
    • 1970-01-01
    • 2015-03-09
    • 2018-12-18
    相关资源
    最近更新 更多