package org.hedgecode.chess.service.jpa;
import javax.persistence.EntityManager;
-import javax.persistence.Persistence;
import org.hedgecode.chess.domain.DomainObject;
+import org.hedgecode.chess.persistence.PersistenceManager;
import org.hedgecode.chess.service.DomainService;
+import org.hedgecode.chess.service.ServiceRegistry;
/**
*
*/
public abstract class JpaDomainService<DomainType extends DomainObject> implements DomainService<DomainType> {
- // todo: maybe single entityManager
- private DomainManager domainManager;
-
JpaDomainService() {
- domainManager = new DomainManager();
}
EntityManager getEntityManager() {
- return domainManager.getEntityManager();
+ PersistenceManager persistenceManager = ServiceRegistry.singleProvider(
+ PersistenceManager.class
+ );
+ return persistenceManager.getEntityManager();
}
@Override
);
}
- private class DomainManager {
-
- private static final String PERSISTENCE_UNIT_NAME = "db-etude-persistence-unit";
-
- private EntityManager entityManager;
-
- EntityManager getEntityManager() {
- if (entityManager == null)
- createEntityManager();
- return entityManager;
- }
-
- void createEntityManager() {
- entityManager = Persistence.createEntityManagerFactory(
- PERSISTENCE_UNIT_NAME
- ).createEntityManager();
- }
-
- }
-
}