Oracle JDBCドライバーは、setFetchSize()
を適切にサポートしています。 java.sql.Statement
のメソッド 、これにより、ドライバーが一度にフェッチする行数を制御できます。
ただし、RowMapper
Springで使用されているように、各行をメモリに読み込み、RowMapper
を取得します。 それをオブジェクトに変換し、各行のオブジェクトを1つの大きなリストに格納します。結果セットが巨大な場合、JDBCが行データをフェッチする方法に関係なく、このリストは大きくなります。
大きな結果セットを処理する必要がある場合、RowMapperはスケーラブルではありません。 RowCallbackHandler
の使用を検討してください。 代わりに、JdbcTemplateの対応するメソッドとともに。 RowCallbackHandler
結果の保存方法を指示するものではなく、保存するのはあなたに任されています。