【问题标题】:JSF 2 Handling DataJSF 2 处理数据
【发布时间】:2011-08-25 11:08:45
【问题描述】:

我正在 Tomcat 中使用 JSF2 开发应用程序。对 JSF 来说仍然很新鲜 我有一个问题,我想这个问题对于在开发 Web 应用程序,特别是在 JSF 2 中具有相当良好经验的人来说很容易回答。这是关于在用户与应用程序交互期间存储用户数据的方式。就目前而言,我将大量数据保存在会话范围的托管 bean 中(例如早期从数据库实体中提取的集合,这些实体本身链接到其他实体)并且每当发出请求时,应用程序都会为存储的这些对象中的任何一个提供服务在那个集合中。但我担心会话 bean 变得过于臃肿,并且不知道单个会话 bean 消耗多少内存是安全的。我不知道当应用程序投入生产并且有很多用户登录时,服务器是否可以处理它。所以我想我的问题如下。

关于存储、处理和服务来自数据库的大量用户数据,是否有任何规则值得购买:

  1. 是否可以按照我的方式进行操作(即在会话范围的 bean 中存储大量内容),以便应用程序不需要在每次请求时从数据库中查询和检索数据。这就是如何最好地加载链接到存储在列表中的对象的实体的情况,因此它们不会一次全部加载,而是仅在实际对象用于执行某些操作之后,然后再将数据发送给用户。

  2. 或者应用程序是否应该保持会话 bean 相当轻量(没有预拉实体、对象等的列表),而是在每次需要更大的数据时访问数据库,检索并提供服务苍蝇?

  3. 或者也许有一种完全不同的方法,首选或推荐,来做到这一点。

非常感谢所有建议和帮助。

【问题讨论】:

    标签: jsf-2


    【解决方案1】:

    您绝对不应该通过 JSF 会话范围的 bean 来执行实体缓存工作。您应该将实体缓存作业委托给持久层并在那里对其进行配置/微调。例如,JPA 和 Hibernate 有很好的缓存支持。以下是一些关于它的文章:

    一个 JSF 会话范围的 bean 应该只包含会话范围的数据,这些数据在整个浏览器会话期间用于 webapp 的每个请求。例如,登录用户、用户偏好、用户语言/区域设置等。

    (表单)数据应该只由 JSF 请求或视图范围的 bean 表示。只需在每个新的请求或视图上调用数据库,而不必担心在 JSF 支持 bean 中访问数据库的成本。让持久层操心吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-19
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 2012-09-11
      • 2013-03-04
      相关资源
      最近更新 更多