我试图在servlet中获取jpa EntityManager
的实例,如下所示
ApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
EntityManagerFactory emf = (EntityManagerFactory)context.getBean("entityManagerFactory");
EntityManager em=emf.createEntityManager();
我的问题是,它是一种在servlet获取服务方法中获取EntityManager实例的有效方法。我们还应该在上述方法中明确关闭EntityManagerFactory
/ EntityManager
。
答案 0 :(得分:4)
由于您使用弹簧,理想情况下您应该使用另一个图层(例如DAO)
@PersistenceContext
private EntityManager entityManager;
春天将照顾这一点。
如果你真的需要在servlet中访问,而不是在spring-mvc @Controller
中,那么从应用程序上下文中获取service / dao bean并在那里使用上面的构造。如果由于一些奇怪的原因你应该手动处理实体管理器 - 是的,你必须.close()
它。