[LIB-9] Implementation SPI for services, managers and adapters
[chesshog.git] / chesshog-db-etude / src / main / java / org / hedgecode / chess / service / jpa / JpaDomainService.java
index 37a4dcb..20c5101 100644 (file)
 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;
 
 /**
  *
@@ -29,15 +30,14 @@ import org.hedgecode.chess.service.DomainService;
  */
 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
@@ -63,24 +63,4 @@ public abstract class JpaDomainService<DomainType extends DomainObject> implemen
         );
     }
 
-    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();
-        }
-
-    }
-
 }