我有兩段代碼基本上做同樣的事情。我用兩種不同的方式填充數據表。下面是它們:哪個更好? - 每次查詢數據庫或保留會話中的對象
<h:dataTable binding="#{currentUser.ITEMS}" style=" width:505px;" id="userTable" value="#{currentUser.items}" var="user" >
<h:column>
</h:column>
<h:column>
<f:facet name="header">Account Number</f:facet>
#{user.name}
</h:column>
<h:column>
<f:facet name="header">Currency</f:facet>
#{user.surname}
</h:column>
</h:dataTable>
其中物品是包含用戶的項目和一個數組,其中currentUser是User類型的會話範圍類對象。在第一個代碼中,當用戶登錄時,我從數據庫中獲取所有項目,並將它們添加到會話以供稍後使用,因爲我以這種方式填充表格。現在,第二個版本:
<h:dataTable binding="#{user.ITEMS}" style=" width:505px;" id="userTable" value="#{user.items}" var="user" >
<h:column>
</h:column>
<h:column>
<f:facet name="header">Account Number</f:facet>
#{user.name}
</h:column>
<h:column>
<f:facet name="header">Currency</f:facet>
#{user.surname}
</h:column>
</h:dataTable>
在第二個例子,我不保留的項目列表時用戶登錄到系統,但每當一個表來填充,我做的數據庫查詢,並通過填寫表格用戶的項目。
所以我的問題是,哪種方式更好?我發現在第一種情況下,使用大量會話對象可能會有害,但在第二種情況下,我們每次需要項目信息時都會進行數據庫搜索。那麼我們可以說在空間,時間等方面,一種方式比另一種更好嗎?
您不應該在JSF中緩存。您應該在JPA中緩存。不要濫用HTTP會話來充當數據庫緩存。 – BalusC