3

私はしばらく ORM フレームワークを使用してきましたが、Hibernate は初めてです。

優れた結果セットを取得するクエリ (クエリか基準かは関係ありません) があり、それをページ分割したいとします。setMaxResult() メソッドと setFirstResult() メソッドの組み合わせ、または ScrollableResult のどちらを使用しますか?

パフォーマンス (実行時間とメモリ消費量) に関する最良のアプローチはどれですか?

4

2 に答える 2

2

個別の要求と応答のサイクルで個別のページの結果を提供する Web アプリケーションを実装している場合、これを使用ScrollableResultして利点を得る方法はありません。setFirst/Max/Result を使用します。ただし、正確なクエリと結果の合計サイズによっては、これが実際のパフォーマンス キラーになる可能性があります。特に、貧弱なデータベースが毎回結果セット全体をソートする必要がある場合は、100 から 110 番目のレコードを計算できます。

于 2012-04-25T13:18:03.753 に答える
1

先日も同じ質問があり、 と で解決しましsetMaxResult(..)setFirstResult(..)。問題は次の 2 つです。

  • ScrollableResultnext()jdbc ドライバーまたはデータベースが適切に処理していない場合、への呼び出しごとに 1 つのクエリを実行することがあります。これは私たちの場合でした(MySQL)
  • JPA標準ではなく、休止状態固有のものです。
于 2012-04-25T13:17:45.370 に答える