我正在JPA(Eclipselink)中使用非托管(无EJB)上下文。何时创建新的EntityManager
我的问题是:我应该保持一个实体管理器打开多久?
Swing应用程序: - 一个开放的实体管理器,只要在应用程序运行 - 每一个动作一个新的实体管理器
Web应用程序: - 每个 - 每个(不同的)行动 一个实体管理器要求 - 每个会话 - 每个应用程序(-scope),asuming应用是线程安全的
问候
我正在JPA(Eclipselink)中使用非托管(无EJB)上下文。何时创建新的EntityManager
我的问题是:我应该保持一个实体管理器打开多久?
Swing应用程序: - 一个开放的实体管理器,只要在应用程序运行 - 每一个动作一个新的实体管理器
Web应用程序: - 每个 - 每个(不同的)行动 一个实体管理器要求 - 每个会话 - 每个应用程序(-scope),asuming应用是线程安全的
问候
对于Swing应用程序,我会选择一个EntityManager
每个动作,因为它是相当便宜创建一个,你可能不希望保留,当你不使用它由EntityManager
管理这么多的entites(这是一个EntityManager
每个应用程序)。
对于Web应用程序,使用的典型模式是“OpenSessionInView”模式(适用于Hibernate的Session
,但它也可以应用于EntityManager
,因为两者在逻辑上都提供相同的角色/功能)。
此处了解详情: https://community.jboss.org/wiki/OpenSessionInView
希望这有助于。
一个实体管理器每个请求应该是正常的。但他们应该通过一些连接池来工作。