0

JPA-Hibernate アプリケーションを Java EE 6 環境から Tomcat 7 環境に移動しています。

アプリケーションには、EntityManager. Java EE 環境では、アノテーションを使用してそれを注入し@PersistenceContext、コンテナにEntityManager. 手動でやらなければならないので、どうすればいいのだろうと思っていました。

エンティティ マネージャは一意である必要がありますか? もしそうなら、それはstatic final起動時に作成され、すべてのDAOクラスが使用するフィールドにすることができますか? 閉じてから再度開くライフサイクルはありますか?

4

1 に答える 1

2

残念ながら、手動で行う必要があります。私が通常行う方法は、特別なクラスを定義することです。

public class EMF {
  private static EntityManagerFactory factory = Persistence.createEntityManagerFactory("name");

  public static EntityManager getEntityManager() {
    return factory.createEntityManager();
  }
}

したがって、EntityManager が必要になるたびに、手動で作成する必要があります。トランザクションも処理する必要があります。

EntityManager em = EMF.getEntityManager();
EntityTransaction et = em.getTransaction();
try {
  MyEntity my = new MyEntity();
  et.begin();
  try {
    em.persist(my);
    et.commit();
  } catch (Exception ex) { 
    if (et.isActive())
      et.rollback();
  }
} finally {
  em.close();
}
于 2013-01-16T09:38:28.307 に答える