EntityManager生命周期应该是每个Servlet请求吗?还是更久?

nec*_*cer 2 java servlets jpa java-ee servlet-filters

我目前正在EntityManager从servlet EntityManagerFactorydoFilter方法中获取一个Filter,将它传递给Servlet,并在出路时关闭它.

就生命EntityManager而言,这是一种良好的做法吗?或者我应该有不同的寿命EntityManager

ewe*_*nli 5

听起来不错.

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

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

以上信息来自这篇关于Web应用程序中PersistenceContext的帖子.

获得一个EntityManager是我相信一个廉价的操作(不同于获得工厂本身).至少,Hibernate的Session和SessionFactory就属于这种情况.所以我会选择你的原创设计.