【发布时间】:2012-06-25 19:14:35
【问题描述】:
我看到的用于创建 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 容器的环境。
谢谢。
【问题讨论】:
标签: java jpa entitymanager