java - EntityManager 生命周期是否应该针对每个 Servlet 请求?或者更长?

标签 java jakarta-ee servlets jpa servlet-filters

我目前正在 servlet FilterdoFilter 方法中从 EntityManagerFactory 获取 EntityManager,传递它到 Servlet,并在退出时关闭它。

EntityManager 的生命周期而言,这是一个好的实践吗?或者我应该为 EntityManager 设置不同的生命周期?

最佳答案

我觉得听起来不错。

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

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

以上信息来自这篇关于PersistenceContext in a web app的帖子.

我认为获取EntityManager是一种廉价的操作(与获取工厂本身不同)。至少,Hibernate 的 Session 和 SessionFactory 就是这样。所以我会选择你的原创设计。

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

相关文章:

java - 我在 susbstring 管理中遇到错误

performance - 性能基准测试的最佳实践

java - 使用EJB 来持久化。如何在其上配置持久性单元?

Java EE应用程序不像jsp那样打印JSP文件,而是像HTML一样打印

Java servlet : do parameters sent with doGet() get encoded using HTTPS?

java - 如何在本地计算机上运行的 docker 容器之外公开我的 tomcat 服务器?

java - 单个查询能否给出 Spring Boot 中条件结果的结果?

java - 如何在webflux ServerHttpRequest中获取原始url路径

java - eclipse : Have multiple Dynamic web projects contribute to a single war file?

javascript - 如何获取被点击元素的ID