- - PR -
O/Rマッピングと大量レコードの検索について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-04-19 22:14
お世話になります。
HibernateやTorqueのようなO/Rマッピングを利用した場合、 大量レコードの検索を行うと、OutOfMemoryで異常終了する場合があります。 画面の場合は、出力制限を設けることやページング処理で 回避できますが、CSVファイルへの出力などの場合、 出力レコード数に制限を設けたくない場合が多いです。 (伝送関連の問題はありますが) 「画面で制限掛けるんならダウンロード機能が欲しい。」 とか、良く言われます。 こういった場合、ファイル出力処理にはO/Rマッピングを 利用せずに、JDBC直実装でフェッチしながらファイルに出力する といった方法をとるしか思いつきません。 皆さんはどのような実装をされているでしょうか。 実装方法を聞くというのは恐れ多いですが、 ご教授の程宜しくお願いします。 |
|
投稿日時: 2006-04-19 23:50
正直に毎度毎度作らずにバッチあたりで作っておいてそれをDLしてもらうとか?
|
|
投稿日時: 2006-04-26 12:41
実際に実装したわけではないですが、iBATISの場合queryForPagenatedListメソッドを使用するといいかもしれないです。
ページ単位で、レコードの取得を行っているようなのでうまくいくかもしれません。 |
|
投稿日時: 2006-04-26 15:39
Hibernateにも,開始行&終了行を指定して結果を得る方法がありますので,
数回に分けて取得する方法を考えてみては? |
|
投稿日時: 2006-04-26 16:13
このへんをご参考に。
http://www.hibernate.org/hib_docs/v3/reference/en/html/batch.html キャッシュがメモリを無駄使いするのを防ぐことが必要です。 session.flush() の後に、session.clear() しておきましょう。 使ったことないですが、StatelessSession を使う手もありますね。本質的には、JDBC 直接呼出しとあんまり変わらないかもしれませんが。 |
1