首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA EntityManger设计原则

JPA EntityManger设计原则
EN

Stack Overflow用户
提问于 2018-01-24 20:18:17
回答 1查看 133关注 0票数 0

我正在一个运行在Tomcat 8中的web应用程序中使用JPA,我对JPA还比较陌生,并且很难找到如何正确地设计我的web应用程序来使用EntityManager。我读过“”和"Pro JPA 2",以及一些关于实体管理人员的文章,但我仍然不清楚如何正确设计我的web应用程序。

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

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

我目前正在本地机器上进行开发,在那里我是唯一的用户。

每种方法的优缺点是什么?两者都能扩展到数百个用户吗?

我没有真实的经验来回答这些问题,所以我想从那些在企业业务应用中使用JPA的人那里寻找一些答案/指导。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 01:16:27

我创建了ScopedEntityManager包装器来简化servlet中JPA的使用。它使用一个线程局部变量为http请求创建一个自动管理的EM。

它确保EM在servlet请求之后是rollbacked+closed。同一请求线程在getter方法中返回相同的EM。如果一切顺利,只需提交()即可。抛出异常不是问题,因为请求侦听器负责回滚()。

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

https://github.com/Murmur/ScopedEntityManager

webapp/webapp/jpa1.jsp

因此,是的,为每个http请求创建一个新的EntityManager。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48430918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档