2011-06-22 12 views
0

Spring docs specifyRowCallbackHandler引数は「結果を抽出するオブジェクトで、一度に1行」としています。私はprocessRow()が行ごとに一度呼び出されるのを見ますが、これらの呼び出しは並行している可能性がありますか?Spring:RowCallbackHandlerを持つJdbcTemplate.query()はprocessRow()を同時に呼び出しますか?

RowCallbackHandlerは、処理済みオブジェクトのCollectionを構築し、時にはその処理を依頼してコレクションを提出するなど、状態を維持しています。このCollectionが同時に変更されるかどうか、または一度に1つだけprocessRow()が起こっていると信じることができるかどうかを知る必要があります。

答えて

3

これは本当にあなた次第です。ソースコードが表示されている場合は、を入力してRowCallbackHandlerResultSetExtractorアダプタクラスにラップしてからQueryStatementCallback(sic!)に再度ラップします。

あなたが同じRowCallbackHandlerインスタンスを2つの同時実行query()実行に渡すと、Springはすべてのこれらのレイヤーを通して同じオブジェクトを使用します。しかし、query()実行ごとにRowCallbackHandlerという新しいインスタンスを作成すると、あなたは安全です。

0

あなたの質問を理解できれば、一度に1行です。サンプルコードは、このインタフェースを呼び出す結果セット抽出プログラムのコードです。

while (rs.next()) { 
    this.rch.processRow(rs); 
} 
関連する問題