All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.claro.persistence.ScopedEntityManagerFactory Maven / Gradle / Ivy

package es.claro.persistence;

import java.util.Map;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

/**
 * 
 * @author puche
 */
public class ScopedEntityManagerFactory extends EntityManagerFactoryProxy implements LazyCloseListener {

   private final ThreadLocal threadLocal;

   public ScopedEntityManagerFactory(final EntityManagerFactory emf) {

      super(emf);
      threadLocal = new ThreadLocal();
   }

   @Override
   public EntityManager createEntityManager(final Map map) {

      EntityManagerProxy em = threadLocal.get();
      if (em == null) {
         em = new LazyCloseEntityManager(super.createEntityManager(map));
         createEntityManager(em);
      }
      return em;
   }

   @Override
   public EntityManager createEntityManager() {

      EntityManagerProxy em = threadLocal.get();
      if (em == null) {
         em = new LazyCloseEntityManager(super.createEntityManager());
         createEntityManager(em);
      }
      return em;
   }

   protected void createEntityManager(final EntityManagerProxy em) {
      threadLocal.set(em);
      ((LazyCloseEntityManager) em).setLazyCloseListener(this);
   }

   protected EntityManagerProxy getEntityManager() {
      return threadLocal.get();
   }

   public void lazilyClosed() {
      threadLocal.set(null);
   }

   public void setPersistenceUnitName(final String value) {

   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy