package banco.connection; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.apache.log4j.Logger; import org.eclipse.persistence.config.BatchWriting; import org.eclipse.persistence.config.PersistenceUnitProperties; import org.eclipse.persistence.config.TargetDatabase; import org.postgresql.Driver; import aplicacao.helper.FileHelper; import aplicacao.helper.MessageHelper; public class MecasoftEntityManager { private static Logger log = Logger.getLogger(MecasoftEntityManager.class); private static EntityManagerFactory emf = null; private static Map<String, Object> properties = new HashMap<String, Object>(); private static final ThreadLocal<EntityManager> ENTITY_MANAGER_CACHE = new ThreadLocal<EntityManager>(); public synchronized static void init() { try { Map<String, String> prop = FileHelper.getProperties(); properties.put(PersistenceUnitProperties.TARGET_DATABASE, TargetDatabase.PostgreSQL); properties.put(PersistenceUnitProperties.JDBC_DRIVER, Driver.class.getCanonicalName()); properties.put(PersistenceUnitProperties.JDBC_URL, prop.get("URL")); properties.put(PersistenceUnitProperties.JDBC_USER, prop.get("USER")); properties.put(PersistenceUnitProperties.JDBC_PASSWORD, prop.get("PASSWORD")); properties.put(PersistenceUnitProperties.CONNECTION_POOL_MIN, "1"); properties.put(PersistenceUnitProperties.CONNECTION_POOL_MAX, "10"); properties.put(PersistenceUnitProperties.CACHE_STATEMENTS, "true"); properties.put(PersistenceUnitProperties.BATCH_WRITING,BatchWriting.JDBC); properties.put(PersistenceUnitProperties.PERSISTENCE_CONTEXT_CLOSE_ON_COMMIT,"true"); // Cria as tabelas log.info("Gerando tabelas..."); properties.put(PersistenceUnitProperties.DDL_GENERATION,PersistenceUnitProperties.CREATE_OR_EXTEND); properties.put("eclipselink.logging.level", "FINE"); properties.put("eclipselink.logging.timestamp", "true"); properties.put("eclipselink.logging.session", "true"); properties.put("eclipselink.logging.thread", "true"); properties.put("eclipselink.logging.exceptions", "true"); emf = Persistence.createEntityManagerFactory("mecasoft", properties); } catch (IOException e) { log.error(e); MessageHelper.openError("Arquivo de configura��o n�o pode ser encontrado."); } } public static EntityManager getEntityManager(){ EntityManager entityManager = ENTITY_MANAGER_CACHE.get(); if (entityManager == null) { ENTITY_MANAGER_CACHE.set(getEntityManagerFactory().createEntityManager()); return ENTITY_MANAGER_CACHE.get(); } return entityManager; } public static EntityManagerFactory getEntityManagerFactory(){ if(emf == null) init(); return emf; } }