gpt4 book ai didi

java - JPA EntityManager 的设计负责人

转载 作者:行者123 更新时间:2023-12-02 11:42:46 25 4
gpt4 key购买 nike

我在 Tomcat 8 中运行的 Web 应用程序中使用 JPA。我对 JPA 比较陌生,并且很难弄清楚如何正确设计我的 Web 应用程序以使用 EntityManager。我已经阅读了“Java Persistence with Hibernate”和“Pro JPA 2”,以及一些有关实体管理器的帖子,但我仍然不清楚如何正确设计我的 Web 应用程序。

我应该创建一个供 Web 应用程序使用的单例 EntityManager 来服务所有请求,例如 CRUD(创建、读取、更新、删除)实体吗?

或者我应该要求 EntityManagerFactory 为每个传入的用户请求创建一个新的 EntityManager,并在处理完请求后关闭 EntityManager?

我目前正在本地计算机上进行开发,我是唯一的用户。
每种方法的优点/缺点是什么?两者都能扩展到数百个用户吗?

我没有现实世界的经验来回答这些问题,因此我正在向在企业业务应用程序中使用过 JPA 的人寻求一些答案/指导。

谢谢

最佳答案

我创建了 ScopedEntityManager 包装器来简化 Servlet Web 应用程序中的 JPA 使用。它使用线程本地变量为 http 请求创建一个自动管理的 EM。

它确保 EM 在 servlet 请求后回滚+关闭。对于同一请求线程,在 getter 方法中返回相同的 EM。如果一切顺利,你只需要 commit() 。抛出异常不是问题,因为请求监听器会处理 rollback()。

了解如何实例化 EM 包装器和生命周期管理器。 https://github.com/Murmur/ScopedEntityManager/blob/master/src/es/claro/persistence/ScopedContextListener.java

https://github.com/Murmur/ScopedEntityManager

https://github.com/Murmur/ScopedEntityManager/blob/master/example_webapp/webapp/jpa1.jsp

所以是的,为每个 http 请求创建一个新的 EntityManager。

关于java - JPA EntityManager 的设计负责人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48430918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com