- * It may be a good idea to close the EntityManager, when you're finished with it. - *
- *- * All created EntityManager are automatically cleaned up once {@link #close()} is called. - *
- * - * @return EntityManager - */ - public EntityManager createEntityManager() - { - final EntityManager em = this.emf.createEntityManager(); - this.activeEms.add(em); - - return em; - } - - @Override - public void close() - { - LOG.debug("Shutting down resources"); - this.activeEms.forEach(em -> - { - try - { - if(em.getTransaction() != null && em.getTransaction().isActive()) - { - em.getTransaction().rollback(); - } - em.close(); - } - catch(final Exception e) - { - LOG.warn("Unable to close EntityManager", e); - } - }); - - LOG.debug("Cleared {}x EntityManagers", this.activeEms.size()); - - this.activeEms.clear(); - - try - { - this.emf.close(); - LOG.debug("Released EntityManagerFactory"); - } - catch(final Exception e) - { - LOG.error("Failed to release EntityManagerFactory", e); - } - } - - public static EntityManagerController createForStandalone( - final String driverFullClassName, - final String connectionProviderClassName, - final String jdbcUrl, - final String username, - final String password - ) - { - return createForStandalone( - driverFullClassName, - connectionProviderClassName, - "Test", - jdbcUrl, - username, - password); - } - - public static EntityManagerController createForStandalone( - final String driverFullClassName, - final String connectionProviderClassName, - final String persistenceUnitName, - final String jdbcUrl, - final String username, - final String password - ) - { - final MutablePersistenceUnitInfo persistenceUnitInfo = new MutablePersistenceUnitInfo() - { - @Override - public void addTransformer(final ClassTransformer classTransformer) - { - // Do nothing - } - - @Override - public ClassLoader getNewTempClassLoader() - { - return null; - } - }; - persistenceUnitInfo.setTransactionType(PersistenceUnitTransactionType.RESOURCE_LOCAL); - persistenceUnitInfo.setPersistenceUnitName(persistenceUnitName); - persistenceUnitInfo.setPersistenceProviderClassName(HibernatePersistenceProvider.class.getName()); - AnnotatedClassFinder.find(DefaultJPAConfig.ENTITY_PACKAGE, Entity.class) - .stream() - .map(Class::getName) - .forEach(persistenceUnitInfo::addManagedClassName); - try - { - Collections.list(EntityManagerController.class - .getClassLoader() - .getResources("")) - .forEach(persistenceUnitInfo::addJarFileUrl); - } - catch(final IOException ioe) - { - throw new UncheckedIOException(ioe); - } - - final Map