DBからクエリを実行するページにデータテーブルがあります。実行時間が遅すぎます。ページのレンダリングに時間がかかりすぎます。それをスピードアップする方法は?ストアド プロシージャは、望ましいソリューションではありません。
<p:dataTable var="abc" value="#{abc.getValues()}">...
getValues(){
return ...createQuery(query);
}
DBからクエリを実行するページにデータテーブルがあります。実行時間が遅すぎます。ページのレンダリングに時間がかかりすぎます。それをスピードアップする方法は?ストアド プロシージャは、望ましいソリューションではありません。
<p:dataTable var="abc" value="#{abc.getValues()}">...
getValues(){
return ...createQuery(query);
}
JSF によってトリガーされる getter メソッドで DB クエリ (または負荷の高い処理) を実行することはお勧めできません。メソッドにログ ステートメントを配置するgetValues
と、おそらく複数回呼び出されていることがわかります。そのため、ゲッターは単なるゲッターであり、データはプリロードする必要があります。
Primefaces を使用しているようです。まさにそれを行うための優れた機能をもたらします - LazyDataModel
. 対応するショーケースをご覧ください。Primefaces 3.4 以降では、dataTable
を のキャッシング フィールドにバインドできますLazyDataModel
。