2011-09-08 3 views
2

Я пытаюсь получить экземпляр JPA EntityManager в сервлет следующимсоздать EntityManager из EntityManagerFactory

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

Мой вопрос, это эффективный способ получить экземпляр EntityManager внутри метода сервлет получить обслуживание. Также мы должны закрыть EntityManagerFactory/EntityManager явно в приведенном выше подходе.

ответ

4

Поскольку вы используете весной, в идеале вы должны использовать другой слой (DAO, например), где вы можете иметь

@PersistenceContext 
private EntityManager entityManager; 

И весна будет заботиться об этом.

Если вам действительно нужен этот доступ в сервлете, а не в spring-mvc @Controller, тогда получите сервис/dao bean из контекста приложения и используйте приведенную выше конструкцию. И если по какой-то странной причине вам нужно вручную обработать диспетчер сущности - да, вы должны это сделать .close().

+0

Весна не заботится. Возможно, весной 7,0 в 2021 году он, наконец, будет работать. :-( – peterh

Смежные вопросы