私は Primefaces Datatable コンポーネントを使用しており、システム バックエンドは Glassfish と Oracle データベースを実行しています。
大規模な検索操作を行うと、AppServer の負荷が大きくなりすぎます。Appserver は常に完全な結果セットをロードしますが、これは負荷がかかりすぎます。 その時点でデータベースから「ページ」を選択するだけで、Appserver の負荷を最適化する方法を探していますか?
Primefaces Datatable でページネーションを使用すると、ページのみがクライアントに転送されます。これは問題ありませんが、Appserver は引き続き完全な結果セットをロードします。
私はおそらくできると思っていました:
- 最初に db に対して count(*) を実行して、合計の結果セットのサイズを確認します。
- 次に、一意の識別子のリスト (完全な選択を表す) のみを選択して、Appserver SessionBean に入力します。
- 次に、「完全な結果セット データ」のページを選択し、それをクライアントに返します。
次に、クライアントは「次のページ」ボタンを押して、AppServer にデータベースから 2 番目のページをフェッチさせることができます。このフェッチでは、「一意の識別子」リストを使用する必要があります (または、「rownum」変数を使用して全選択のサブセットを指定できます)。すなわち。ここでの実際には、「手動で」ページネーションを行うことになります</p>
Primefaces Datatable コンポーネントを使用して、ユーザーがページネーター ボタンを押したときに Appserver コードで制御を取得するにはどうすればよいですか?
もちろん、これを処理する別の方法は大歓迎です。