我使用的是带有JPA1的资源本地实体管理器。创建的EntityManager的最佳实践是什么
-
每次创建作业关闭实体管理器。(实体管理器重量不重,但仍很无聊)
-
为每个线程创建一个entitymanager,并将其存储为ThreadLocal变量并使用它(a-我应该在哪里关闭entitymanagerb-存储在会话作用域bean中的任何实体都将是分离的实体,因为entitymanager在其持久上下文中关闭了哪个实体,或者现在属于另一个线程。)
-
将entitymanager存储在会话bean中,并在会话期间使用相同的entitymanager(会话彼此不存在)
应该使用@PersistenceContext
注释注入EntityManager
。不要担心它来自哪里—这就是依赖注入的作用。
我为每个请求创建EntityManagers,并在ServletRequestListener
中关闭它们。