Como compartilhar o EntityManager?

Bom dia.
Eu estou migrando minha aplicação para usar JPA com TopLink, e a minha duvida é como compartilhar o EntityManager na minha camada de persistencia !

O EntityManager é inserido no meu Managedbean, Servlet ou EJB através da annotion @PersistenceUnit

Essa inserção é feita através de IoC, porem essa annotion so funciona em classes gerenciadas pelo container, portanto as classes citadas acima funcionam quando recebem a annotion @PersistenceUnit.

O problema é que a minha camada de persistencia (DAO) não é gerenciada pelo container, como fazer para que esta faça uso do EntityManager ?

Olá,

  • Você pode transformar suas DAOs em EJBs Stateless e usar a IoC.
  • Você pode obter os EntityManagers através da EntityManagerFactory (createEntityManager).

Se você não possui requisitos que exijam um application-managed entity manager, ou que te impeçam de transformar duas DAOs em EJB, acho que o caminho mais simples é esse.

[]'s