1

私は Primefaces Datatable コンポーネントを使用しており、システム バックエンドは Glassfish と Oracle データベースを実行しています。

大規模な検索操作を行うと、AppServer の負荷が大きくなりすぎます。Appserver は常に完全な結果セットをロードしますが、これは負荷がかかりすぎます。 その時点でデータベースから「ページ」を選択するだけで、Appserver の負荷を最適化する方法を探していますか?

Primefaces Datatable でページネーションを使用すると、ページのみがクライアントに転送されます。これは問題ありませんが、Appserver は引き続き完全な結果セットをロードします。

私はおそらくできると思っていました:

  1. 最初に db に対して count(*) を実行して、合計の結果セットのサイズを確認します。
  2. 次に、一意の識別子のリスト (完全な選択を表す) のみを選択して、Appserver SessionBean に入力します。
  3. 次に、「完全な結果セット データ」のページを選択し、それをクライアントに返します。

次に、クライアントは「次のページ」ボタンを押して、AppServer にデータベースから 2 番目のページをフェッチさせることができます。このフェッチでは、「一意の識別子」リストを使用する必要があります (または、「rownum」変数を使用して全選択のサブセットを指定できます)。すなわち。ここでの実際には、「手動で」ページネーションを行うことになります</p>

Primefaces Datatable コンポーネントを使用して、ユーザーがページネーター ボタンを押したときに Appserver コードで制御を取得するにはどうすればよいですか?

もちろん、これを処理する別の方法は大歓迎です。

4

1 に答える 1