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 コンテナーを使用しない環境について話しています。
ありがとう。