- - PR -
Hibernateで大容量の行数の処理はできますか?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-22 22:35
いつもお世話になっております。
Hibernate初心者です。使い始めて半月くらいです。 今、大容量のDBデータからデータを検索し処理を行うというプログラムを Hibernate3.0.4を使用して作成しています。(データ量は50万件くらい。ログです。) その中で、
※getLogSearchQuery()内でログを検索するHQLを記述しQueryオブジェクトを生成しています。 という処理を行う部分があるのですが、「OutOfMemoryError」が発生してしまいます。 50万件のうち30万件ほどヒットするのですが、検索結果を全部メモリ上に上げようとして エラーが発生するようです。 そこで、質問なのですが、Hibernateでは「ResultSet」のような考え方はできないのでしょうか? 検索結果を全てメモリ上に上げるのではなく
という風にすれば可能であると考えます。 なにか良い知恵はありますでしょうか?一通りのサイトは探してみたのですが そのような記述がありませんでした。 ご教授ください。よろしくお願いします。 | ||||||||
|
投稿日時: 2005-10-23 00:23
ありますよ。 org.hibernate.Query#scroll()がまさにそれです。 使い方もResultSetと似てるので説明は不要でしょう。 | ||||||||
|
投稿日時: 2005-10-23 10:35
あしゅさん、返答ありがとうございます。
確かにAPIドキュメントにも Return the query results as ScrollableResults. The scrollability of the returned results depends upon JDBC driver support for scrollable ResultSets. と書いてありました。。。 これで解決しそうです。 ありがとうございました。 |
1