代码之家  ›  专栏  ›  技术社区  ›  Miguel Ping

JSF2:用ejb打开视图中的会话?

  •  6
  • Miguel Ping  · 技术社区  · 14 年前

    在JSF2应用程序中讨论视图中的opensession模式有意义吗? 我的应用程序有JSF2托管bean,它调用业务服务EJB来完成所有与数据库相关的工作(有一个DAO层,但现在这并不重要)。

    我也在使用JPA。

    1 回复  |  直到 14 年前
        1
  •  2
  •   ewernli    14 年前

    理论上,问题是完全相同的:当实体离开EJB时,它们将变得分离,除非有什么东西使EntityManager的作用域保持打开(下面是一篇关于这个主题的博文: JPA implementation patterns: Lazy loading ).

    blog post

    8) 视图中没有打开的实体管理器支持。 事务作用域 实体管理器, 它脱离了坚持 你可能不再依赖 延迟加载(实际上是JPA 规范未指定 扩展 持久化上下文 ,手持 事务和持久性上下文 只要你愿意。但这个功能是 仅适用于SFSB,而DAO 类是 向持久性服务器发送调用 图层。另外,有专门的 似乎是太过分了。

    UserTransaction 启动并提交事务(如OSIV中的常规过滤器)。然后EJB将参与在过滤器和 EntityManager 将保持开放。虽然我还没有测试过,但我的建议是试一试。