2011-06-15 7 views
-2

私はstruts hibernateを使用しています。hibernate HQLリストに50000を超えるレコードをフェッチできません

50Kを超えるレコードを持つテーブルが1つありますが、私が試してみると、アーラリストのレコードをフェッチすることはできません。それはいつも私を焼くjava heap space exception- Out of memoryです。

この問題は何ですか?

+0

あなたはサーバー側の改ページを使用するために、その時間 – anu

答えて

1

あなたはすでに回答があります:ヒープスペース、RAM、またはより少ないレコードが必要です。

あなたのJVMで使用できるメモリを増やすことはできますが、もっと良い質問は次のとおりです。なぜ50Kレコードをクエリする必要があるのですか?

Javaで処理している場合は、おそらくデータベースの計算を行う戦略が良い考えです。

お客様は、50Kレコードを一度に見る必要はありません。 Googleは何百万ものヒットを得るかもしれないが、彼らはそれらの優先順位をつけて一度にトップ25を送る。あなたのアプリはその戦略をエミュレートする必要があります。

0

一度に1つのエンティティだけを処理する必要がある場合(たとえば、すべてのエンティティをエクスポートファイルに書き込む場合)、結果をHibernateでストリーミングする方法を調べることができます。

のNHibernateの文脈でこのトピックについての話の記事には次のリンクポイントが、解決策は、同様にHibernateのために適用する必要があります:http://ayende.com/blog/4548/nhibernate-streaming-large-result-sets

関連する問題