diferentes maneiras de obter o EntityManager
O idioma usual que vejo para criar o EntityManager é algo assim:
public class BaseDao {
private static final String PERSISTENCE_UNIT_NAME = "Employee";
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
public EntityManager getEntityManager() {
return factory.createEntityManager();
}
}
então é usado assim:
Employee emp = new Employee();
emp.setName("Joe M");
getEntityManager().persist(emp);
A questão é por que não fazer assim:
public class BaseDao{
private static final String PERSISTENCE_UNIT_NAME = "Employee";
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
private EntityManager entityManager = null;
public void setEntityManger() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
this.entityManager = factory.createEntityManager();
}
public EntityManager getEntityManager() {
return this.entityManager;
}
}
Em outras palavras, existe a necessidade de sempre obter o gerenciador de entidades através de factory.createEntityManager ()? ou pode ser criado como uma variável de instância (ou mesmo estática) e recuperado assim?
Para esclarecer, estou falando de um ambiente que não usa contêineres EJB ou Spring.
Obrigado.