JavaSE環境でのエンティティマネージャの使用に関していくつか質問があります。
リポジトリパターンを使用して、データベースでCRUD操作を実行しています。次のような基本リポジトリクラスがあります。
public class Repository<T> implements IRepository<T> {
private EntityManager em;
private String persistenceUnitName;
public Repository(String persistenceUnitName) {
this.persistenceUnitName = persistenceUnitName;
}
@Override
public T find(Class<T> type, Object id) {
return em.find(type, id);
}
private EntityManager getEntityManager() {
if (this.em == null) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName);
em = emf.createEntityManager();
}
return em;
}
...
...
}
次に、リポジトリを継承するEmployeeRepositoryのようなクラスがあります。これらのリポジトリクラスは、私のサービスレイヤーに作成されます。
これはエンティティマネージャーを初期化する良い方法ですか?私はそうではないと思い始めています-永続性ユニットごとに1つのエンティティマネージャーだけが必要なようですか?この場合のように、作成するリポジトリごとにエンティティマネージャーがあります...永続性ユニットごとにエンティティマネージャーが1つだけであることを確認するにはどうすればよいですか?また、エンティティマネージャとエンティティマネージャのファクトリメソッドにはcloseメソッドがあることに気付きました。これらはいつ呼び出す必要がありますか?サーバー終了イベントで?
JavaSEでのJPAの使用に関する優れた情報源をご存知の場合は、その情報をいただければ幸いです。
ありがとう!