CachedRowSetって思ってたのと違うなぁ

と言い切るほど,使い込んではいないけどね.:-)


ちょと思う所あって,Oracle使ってJDBC RowSetJSR114)を試してみた.お相手は,CachedRowSetだ.
「非接続型」行セットと聞いてたんだけど,想い描いていたのと違ったよ.特に,setPageSize()やnextPage()といったページングデータまわり.
てっきり,元ネタに使ったResultSetを破棄しても,nextPage()とかできると思ったんだけど,やってみたらできなかった.orz
#環境のせいか?Oracle10gだと思ってて,実は9iだったとか?


意外とRowSetまわりの情報が無いので,思い違いをしてるだけなのかも知れない.ただ,Oracle JDBCドライバのマニュアルにあった一文にガッカリした.

注意:
データはすべてメモリーにキャッシュされるため、CachedRowSetには大量のデータを格納できません。したがって、大量のデータを戻す可能性のあるOracleCachedRowSetを問合せで使用しないことをお薦めします。

そーなんだ?


あと,CachedRowSetの使い方が,信じられないくらいダサいんだけど,こうゆうもんなのか?

ResultSet resultset = stmt.executeQuery();
RowSet rowset = new OracleCachedRowSet();
rowset.populate(resultset);

実装クラス指定でインスタンス化って,あんまりな気がするんだけど...
JPAのせいか,RowSetはすっかり日陰者って感じ.