JDBCのsetFetchSizeメソッドはご存知でしょうか? 通常、クエリの結果はResultSetにすべてロードされます。このため、大量のレコードを取得するようなクエリではOutOfMemoryErrorが発生してしまいます。 このような場合に有効なのがsetFetchSizeです。 たとえば、クエリ発行の前にsetFetchSize(1000)とすると、1000件ずつResultSetにとりこまれるようになり、OutOfMemoryErrorを回避することが可能です。 (もちろん、搭載メモリ量、1レコードあたりのサイズによります!) しかし、ここに罠がありました。。。 setFetchSizeを使用しているにもかかわらず、全件がResultSetにロードされてしまう場合があるのです。 JDBCドライバごとにsetFetchSizeの挙動がかなり違っているので、はまりどころです。 今回
![JDBC setFetchSize() ではまった話 | TECHSCORE BLOG | TECHSCORE BLOG](https://cdn-ak-scissors.b.st-hatena.com/image/square/e9173ddf1797fd7cae007d3a732dc46b1c01c113/height=288;version=1;width=512/https%3A%2F%2Fwww.techscore.com%2Fblog%2Fwp%2Fwp-content%2Fuploads%2F2019%2F02%2Fnekopc.jpg)