package org.testfun.jee.runner; import org.hibernate.cfg.AvailableSettings; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; public class SingletonEntityManager { public static EntityManager getInstance() { return INSTANCE.getEntityManager(); } private static final SingletonEntityManager INSTANCE = new SingletonEntityManager(); private EntityManager entityManager; private SingletonEntityManager() { } private synchronized EntityManager getEntityManager() { if (entityManager == null) { Map<String, DataSource> config = new HashMap<>(); config.put(AvailableSettings.DATASOURCE, SingletonDataSource.getDataSource()); EntityManagerFactory emf = Persistence.createEntityManagerFactory(PersistenceXml.getInstnace().getPersistenceUnitName(), config); entityManager = emf.createEntityManager(); } return entityManager; } }