私はしばらく ORM フレームワークを使用してきましたが、Hibernate は初めてです。
優れた結果セットを取得するクエリ (クエリか基準かは関係ありません) があり、それをページ分割したいとします。setMaxResult() メソッドと setFirstResult() メソッドの組み合わせ、または ScrollableResult のどちらを使用しますか?
パフォーマンス (実行時間とメモリ消費量) に関する最良のアプローチはどれですか?
個別の要求と応答のサイクルで個別のページの結果を提供する Web アプリケーションを実装している場合、これを使用ScrollableResult
して利点を得る方法はありません。setFirst/Max/Result を使用します。ただし、正確なクエリと結果の合計サイズによっては、これが実際のパフォーマンス キラーになる可能性があります。特に、貧弱なデータベースが毎回結果セット全体をソートする必要がある場合は、100 から 110 番目のレコードを計算できます。
先日も同じ質問があり、 と で解決しましsetMaxResult(..)
たsetFirstResult(..)
。問題は次の 2 つです。
ScrollableResult
next()
jdbc ドライバーまたはデータベースが適切に処理していない場合、への呼び出しごとに 1 つのクエリを実行することがあります。これは私たちの場合でした(MySQL)