小编jay*_*jay的帖子

获取EntityManager的不同方法

我在创建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();
    } 
}
Run Code Online (Sandbox Code Playgroud)

然后就像这样使用:

Employee emp = new Employee();
emp.setName("Joe M");
getEntityManager().persist(emp);
Run Code Online (Sandbox Code Playgroud)

问题是为什么不这样做:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

换句话说,是否需要始终通过factory.createEntityManager()获取实体管理器?或者它可以创建为实例(甚至静态)变量并像这样检索?

为了澄清,我在谈论一个不使用EJB或Spring容器的环境.

谢谢.

java jpa entitymanager

31
推荐指数
1
解决办法
7万
查看次数

标签 统计

entitymanager ×1

java ×1

jpa ×1