2

我目前正在EntityManager从servletEntityManagerFactorydoFilter方法中获取一个Filter,将其传递给 Servlet,并在退出时将其关闭。

就生命周期EntityManager而言,这是一种好的做法吗?还是我应该有不同的一生EntityManager

4

1 回答 1

5

听起来不错。

过滤器和 servlet 将被多个线程同时使用(与无状态或有状态 EJB 不同)。所以EntityManager应该根据请求查找。

或者,您可以通过指定所需的来强制 Web 容器同步对 servlet 的访问(不确定过滤器)SingleThreadModel,在这种情况下,您可以在过滤器或 servlet 中注入EntityManager一次性。

以上信息来自this post about PersistenceContext in a web app

我相信获得EntityManager一个便宜的操作(不像获得工厂本身)。至少,Hibernate 的 Session 和 SessionFactory 是这样的。所以我会选择你的原创设计。

于 2012-04-11T09:45:03.270 回答