package com.sap.hana.cloud.samples.benefits.persistence.manager; import java.util.HashMap; import java.util.Map; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.sql.DataSource; import org.eclipse.persistence.config.PersistenceUnitProperties; public class EntityManagerFactoryProvider { private static EntityManagerFactoryProvider instance = null; private EntityManagerFactory factory = null; private EntityManagerFactoryProvider() { } public static synchronized EntityManagerFactoryProvider getInstance() { if (instance == null) { instance = new EntityManagerFactoryProvider(); } return instance; } public synchronized EntityManagerFactory getEntityManagerFactory() { if (this.factory == null) { this.factory = createEntityManagerFactory(DataSourceProvider.getInstance().get()); } return this.factory; } private EntityManagerFactory createEntityManagerFactory(DataSource dataSource) { final Map<Object, Object> properties = new HashMap<>(); properties.put(PersistenceUnitProperties.NON_JTA_DATASOURCE, dataSource); return Persistence.createEntityManagerFactory("com.sap.hana.cloud.samples.benefits", properties); //$NON-NLS-1$ } public synchronized void close() { if (this.factory != null) { this.factory.close(); this.factory = null; } } }