我目前正在EntityManager
从servletEntityManagerFactory
的doFilter
方法中获取一个Filter
,将其传递给 Servlet,并在退出时将其关闭。
就生命周期EntityManager
而言,这是一种好的做法吗?还是我应该有不同的一生EntityManager
?
我目前正在EntityManager
从servletEntityManagerFactory
的doFilter
方法中获取一个Filter
,将其传递给 Servlet,并在退出时将其关闭。
就生命周期EntityManager
而言,这是一种好的做法吗?还是我应该有不同的一生EntityManager
?
听起来不错。
过滤器和 servlet 将被多个线程同时使用(与无状态或有状态 EJB 不同)。所以EntityManager
应该根据请求查找。
或者,您可以通过指定所需的来强制 Web 容器同步对 servlet 的访问(不确定过滤器)SingleThreadModel
,在这种情况下,您可以在过滤器或 servlet 中注入EntityManager
一次性。
以上信息来自this post about PersistenceContext in a web app。
我相信获得EntityManager
一个便宜的操作(不像获得工厂本身)。至少,Hibernate 的 Session 和 SessionFactory 是这样的。所以我会选择你的原创设计。