2011-08-25 55 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中数据库行程的成本。让持久层担心它。