4

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

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

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

Web 应用程序: - 每个(不同)操作一个实体管理器 - 每个请求一个 - 每个会话一个 - 每个应用程序一个(-范围),假设应用程序是线程安全的

最好的祝福

4

2 回答 2

1

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

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

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

希望这可以帮助。

于 2013-06-28T03:27:52.793 回答
0

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

于 2013-06-25T15:13:32.377 回答