Diferentes formas de conseguir el EntityManager.
El idioma habitual que veo para crear el EntityManager es algo como esto:
public class BaseDao {
private static final String PERSISTENCE_UNIT_NAME = "Employee";
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
public EntityManager getEntityManager() {
return factory.createEntityManager();
}
}
entonces se usa así:
Employee emp = new Employee();
emp.setName("Joe M");
getEntityManager().persist(emp);
La pregunta es por qué no hacerlo de esta manera:
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;
}
}
En otras palabras, ¿es necesario obtener siempre el administrador de entidades a través de factory.createEntityManager ()? ¿O puede crearse como una variable de instancia (o incluso estática) y recuperarse así?
Para aclarar, estoy hablando de un entorno que no utiliza contenedores EJB o Spring.
Gracias.