2012-11-29 135 views
-2

我已經從數據庫查詢的頁面上獲取數據。執行時間太慢。該頁面需要太多時間才能呈現。如何加快速度?存儲過程不是一個理想的解決方案。執行CriteriaQuery太慢

<p:dataTable var="abc" value="#{abc.getValues()}">... 

getValues(){ 
return ...createQuery(query); 
} 
+0

相關:http://stackoverflow.com/questions/2090033/why-jsf-calls-getters-multiple-times/2090062#2090062 – BalusC

回答

2

在由JSF觸發的getter方法中執行數據庫查詢(或任何繁重的處理)是一個壞主意。如果您在getValues方法中使用日誌記錄語句,則可能會看到它被多次調用。正因爲如此,getters應該只是getter,數據應該被預加載。

我看到您正在使用Primefaces。它帶來了一個偉大的設施來做到這一點 - LazyDataModel。看看the according showcase。從Primefaces 3.4開始,您可以將dataTable綁定到LazyDataModel的緩存字段。