Oracleのスクロール可能カーソルの実装

S2Pagerを使っていたら大量な検索結果のあるSQLで、OutOfMemoryError。

原因を調べていたら、これ。

http://otndnld.oracle.co.jp/document/products/oracle10g/101/doc_v5/java.101/B13514-02.pdf
via http://otn.oracle.co.jp/forum/thread.jspa?messageID=11006931

P17-5
基礎となるサーバーがスクロール可能なカーソルをサポートしていないので、スクロール可
能性は別のレイヤーでOracle JDBC によって実装する必要があります。
この機能は、スクロール可能な結果セットの行をクライアント側のメモリー・キャッシュに
格納することにより、実現されていることに注意してください。

重要: スクロール可能な結果セットの行はすべて、クライアント側の
キャッシュに格納されます。そのため、結果セットに多くの行、多くの列
または非常に大きな列が含まれていると、クライアント側のJava Virtual
Machine に障害が発生する可能性があります。大きな結果セットにはスク
ロール可能性を指定しないでください。

とりあえず、PagerStatementFactory を使用せずに、BasicStatementFactory を使用するようにすることで対応。