2013-06-25 45 views
4

我正在JPA(Eclipselink)中使用非托管(无EJB)上下文。何时创建新的EntityManager

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

Swing应用程序: - 一个开放的实体管理器,只要在应用程序运行 - 每一个动作一个新的实体管理器

Web应用程序: - 每个 - 每个(不同的)行动 一个实体管理器要求 - 每个会话 - 每个应用程序(-scope),asuming应用是线程安全的

问候

回答

1

对于Swing应用程序,我会选择一个EntityManager每个动作,因为它是相当便宜创建一个,你可能不希望保留,当你不使用它由EntityManager管理这么多的entites(这是一个EntityManager每个应用程序)。

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

此处了解详情: https://community.jboss.org/wiki/OpenSessionInView

希望这有助于。

0

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