我目前正在从servlet EntityManagerEntityManagerFactory方法内的doFilter获取一个Filter,将其传递到Servlet,并在退出时将其关闭。

EntityManager的寿命而言,这是一种好习惯吗?还是我的EntityManager的寿命不同?

最佳答案

听起来不错。

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

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

以上信息来自有关PersistenceContext in a web app的帖子。

我相信获得EntityManager是一项廉价的操作(与获得工厂本身不同)。至少,Hibernate的Session和SessionFactory就是这种情况。所以我会去为您的原始设计。

关于java - EntityManager的生存期是否应针对每个Servlet请求?或更长时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10102513/

10-13 22:52