从EntityManagerFactory创建EntityManager

时间:2011-09-08 19:34:34

标签: java hibernate jpa

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

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

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

1 个答案:

答案 0 :(得分:4)

由于您使用弹簧,理想情况下您应该使用另一个图层(例如DAO)

@PersistenceContext
private EntityManager entityManager;

春天将照顾这一点。

如果你真的需要在servlet中访问,而不是在spring-mvc @Controller中,那么从应用程序上下文中获取service / dao bean并在那里使用上面的构造。如果由于一些奇怪的原因你应该手动处理实体管理器 - 是的,你必须.close()它。