あなたはResultSetをmodelに入れていませんか?
実はCachedRowSetという強い味方がいるんです。
CachedRowSetって何?という方。
まずは下記のリファレンスを読みましょう。
http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/CachedRowSet.html
英語です。
読む気になりません。
こちらの記事のほうが良いでしょう。
オフラインのResultSetとしてCachedRowSetを使う方法
http://d.hatena.ne.jp/seraphy/20140202
つまりデータベースから取得したデータを
そのまま保持できるというわけです。
ものすごく便利ですよね?
ResultSetの結果をmodelに入れなおして、
その変数を使用するといった実装をする方が多いと思います。
しかし、CashedRowSetを使うことで下記のように
スマートにメモリに保持することができます。
// CachedRowSetを作成 RowSetFactory rowSetFactory = RowSetProvider.newFactory(); CachedRowSet rowSet = rowSetFactory.createCachedRowSet(); // データベースのクエリ結果のResultSetをCachedRowSetに設定する. try (Connection conn = ds.getConnection()) { try (PreparedStatement stm = conn.prepareStatement("select col1, col2, col3 from hogehoge"); ResultSet rs = stm.executeQuery()) { rowSet.populate(rs); } }