(2万行の上に)非常に大きなデータセットを返すストアドプロシージャを実行するために、Hibernateの名前付きクエリを使用しています
につながります私は、休止状態のドキュメントから、 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.htmlに記載されているように、setFirstResult/setMaxResultを使用することはできません。
すべてがうまくいけば、100,000行のような小さなデータセットです。しかし、私が1,000,000でテストするとすぐに、私はOutOfMemoryエラーを受け取ります。
クエリオブジェクトから、私はlistIteratorを取得します。データが1回だけ取り出されたと仮定して、リストアテイター(query.list().listIterator()
)を繰り返しました。
第2レベルのキャッシュが設定されていません。 これらの設定は、Oracleストアド・プロシージャを処理する場合に役立ちますか。
query.setCacheMode(org.hibernate.CacheMode.IGNORE); query.setFetchSize(1000);
query.scroll(org.hibernate.ScrollMode.FORWARD_ONLY);
基本的に、どのように私は、Hibernateに保存されprocsのを使用して大規模なデータセットの取得を管理します。
百万の感謝
なぜ200万行を返そうとしていますか?バッチ処理をお勧めします。 –