【问题标题】:When to create a new EntityManager何时创建新的 EntityManager
【发布时间】:2013-06-22 11:11:53
【问题描述】:

我正在非托管(无 EJB)上下文中使用 JPA (Eclipselink)。

我的问题是:我应该保持实体管理器打开多久?

摇摆应用: - 只要应用程序正在运行,一个打开的实体管理器 - 每个单独的动作一个新的实体管理器

网络应用程序: - 每个(不同的)操作一个实体管理器 - 每个请求一个 - 每节一个 - 每个应用程序(-scope)一个,假设应用程序是线程安全的

最好的问候

【问题讨论】:

    标签: java jakarta-ee jpa eclipselink


    【解决方案1】:

    每个请求一个实体管理器应该是正常的。但它们应该通过一些连接池工作。

    【讨论】:

      【解决方案2】:

      对于 Swing 应用程序,我会为每个操作选择一个 EntityManager,因为创建一个非常便宜,而且您可能不想在不使用它时保留这么多由 EntityManager 管理的实体(这个每个应用程序是一个EntityManager)。

      对于 Web 应用程序,使用的典型模式是“OpenSessionInView”模式(Session 应用于 Hibernate,但它也可以应用于 EntityManager,因为两者在逻辑上提供相同的角色/功能)。

      更多信息在这里: https://community.jboss.org/wiki/OpenSessionInView

      希望这会有所帮助。

      【讨论】:

      • Open Session In View (OSIV) 实际上是一种反模式。更多讨论请参见this post
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      相关资源
      最近更新 更多