2016-04-14 75 views
0

我使用Spring的JdbcTemplate使用下面的代码来提取我的DB一些数据选择过程:Jdbctemplate.query()使用选择查询(Spring框架)

jdbctemplate.query(SELECT_SQL_QUERY, new RowCallbackHandler(){ 
    public void processRow(resultsetRS) throws SQLException{ 

    // Some operations here 
    } 
}); 

当我使用select查询,我想知道这种方法jdbctemplate.query()从数据库加载一切之前处理数据或加载行接?

我需要的答案,因为我用两个SELECT查询和二要看的第一个结果的(所选择的数据进行的操作的结果),意味着如果前做第二个呼叫负载一切任何处理它都不会考虑第一次调用的最后更改(因为我在我的代码中使用了并列)。

回答

1

在JDBC中执行的SELECT查询将所有行作为一组返回。

您必须执行第一个查询,然后执行第二个查询。

这是潜伏期(n + 1)死亡的来源。

一个更好的解决方案可能是在一个查询中完成:您将只有一次网络往返。

+0

将所有行作为一个集合返回?即使它涉及大量的数据? 10 000行100 000行......? – FrankelStein

+0

是的,这就是SQL的工作原理。如果您的查询带回了一百万行,您必须处理它们或编写更智能的查询。 – duffymo

+0

什么是n + 1延迟死亡? – FrankelStein