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.