我正在尝试在servlet中获取jpa EntityManager的实例,如下所示

ApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
EntityManagerFactory emf = (EntityManagerFactory)context.getBean("entityManagerFactory");
EntityManager em=emf.createEntityManager();


我的问题是,这是在servlet get服务方法中获取EntityManager实例的有效方法。同样,我们应该在上述方法中明确关闭EntityManagerFactory / EntityManager

最佳答案

由于您使用的是弹簧,因此理想情况下,应使用另一层(例如DAO)

@PersistenceContext
private EntityManager entityManager;


春天会解决这个问题。

如果您确实需要在servlet中而不是在spring-mvc @Controller中进行访问,则可以从应用程序上下文中获取service / dao bean,并在那里使用上述构造。而且,如果出于某些奇怪的原因,您应该手动处理实体管理器-是的,您必须.close()它。

关于java - 从EntityManagerFactory创建EntityManager,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7353470/

10-12 02:55