2011-08-25 58 views
1

我正在開發一個在Tomcat中使用JSF2的應用程序。 JSF仍然很新鮮我有一個問題,我想這個問題對於開發Web API和JSF 2有相當好經驗的人來說非常簡單。它是關於在與應用程序交互期間應該存儲用戶數據的方式。就目前而言,我在一個會話範圍的託管bean中保存了大量數據(比如之前從自身鏈接到其他實體的數據庫實體中提取的集合),並且每當請求發出時,應用程序就會爲存儲的這些對象中的任何一個提供服務在那個集合中。但我擔心會話bean變得過度膨脹,並且不知道單個會話bean消耗多少內存是安全的。我不知道的是,當應用程序投入生產並且很多用戶登錄時,服務器就可以正常處理它。所以我想我的問題如下。JSF 2處理數據

是否有任何規則去購買有關存儲,handlind和服務大量是來自於數據庫用戶的數據:

  1. 它是確定做我的方式(即存儲很多東西在一個會話scoped bean),以便每個請求的應用程序不需要查詢和檢索數據庫中的數據。這就是如何最好地加載鏈接到存儲在列表中的對象的實體,以便它們不是一次全部加載,而只是在將實際對象用於執行某些操作之後纔將數據發送給用戶。

  2. 或者應該讓會話bean保持相當輕量級(沒有預先拉取的enities,對象等列表),而是每次需要更大的數據塊時訪問數據庫,檢索它並在飛?

  3. 或者也許有一個完全不同的方法,首選或推薦,做到這一點。

所有建議和幫助都非常感謝。

回答

0

您絕對不應該使用JSF會話作用域bean來執行實體緩存作業。您應該將實體緩存作業委託給持久層,並在那裏配置/微調它。例如,JPA和Hibernate具有相當不錯的緩存支持。這裏有一些文章來讀一下:

一個JSF會話範圍的bean應該僅僅只包含會話範圍這是在請求中使用數據整個瀏覽器會話中的web應用程序。例如,登錄用戶,用戶偏好,用戶語言/區域等等。 (表單)數據應該僅由JSF請求或視圖範圍的bean來表示。只需在每個新的請求或視圖上調用數據庫,並且不用擔心JSF支持bean中數據庫行程的成本。讓持久層擔心它。