Обычная идиома, которую я вижу для создания EntityManager, выглядит примерно так:
public class BaseDao {
private static final String PERSISTENCE_UNIT_NAME = "Employee";
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
public EntityManager getEntityManager() {
return factory.createEntityManager();
}
}
Тогда это используется так:
Employee emp = new Employee();
emp.setName("Joe M");
getEntityManager().persist(emp);
Вопрос: почему бы не сделать это так:
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;
}
}
Другими словами, есть ли необходимость всегда получать менеджер сущностей через factory.createEntityManager()
? или он может быть создан как переменная экземпляра (или даже статическая переменная) и получен таким образом?
Чтобы уточнить, я говорю о среде, которая не использует контейнеры EJB или Spring.
Благодарю.