2016-04-14 67 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