Example usage for org.springframework.orm.jpa EntityManagerFactoryUtils closeEntityManager

List of usage examples for org.springframework.orm.jpa EntityManagerFactoryUtils closeEntityManager

Introduction

In this page you can find the example usage for org.springframework.orm.jpa EntityManagerFactoryUtils closeEntityManager.

Prototype

public static void closeEntityManager(@Nullable EntityManager em) 

Source Link

Document

Close the given JPA EntityManager, catching and logging any cleanup exceptions thrown.

Usage

From source file:org.grails.datastore.gorm.jpa.support.JpaPersistenceContextInterceptor.java

@Override
public void disconnect() {
    if (entityManager != null) {
        EntityManagerFactoryUtils.closeEntityManager(entityManager);
    }

}

From source file:hsa.awp.common.util.OpenEntityManagerTimerTaskFactory.java

/**
 * Closes the previously created {@link EntityManager}.
 *//*from  w w w. jav a  2s  . co m*/
private void closeEntityManager() {

    log.trace("Unbinding EntityManager from thread '{}'", Thread.currentThread().getName());
    EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager.unbindResource(emf);

    log.debug("Closing EntityManager");
    EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager());
}

From source file:hsa.awp.common.test.OpenEntityManagerInTest.java

/**
 * Closes the previously created {@link EntityManager}.
 */// w w w . j  a va2 s . c  o m
@After
public final void closeEntityManager() {

    if (create) {
        log.trace("Unbinding EntityManager from thread '{}'", Thread.currentThread().getName());
        EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager
                .unbindResource(emf);

        log.debug("Closing EntityManager");
        EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager());
    } else {
        log.debug("Don't close EntityManager because of @Transactional annotation");
    }
}

From source file:corner.orm.gae.impl.EntityManagerSourceImpl.java

@Override
public void threadDidCleanup() {
    if (!participate) {
        EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager
                .unbindResource(entityManagerFactory);
        logger.debug("Closing JPA EntityManager in EntityManagerSourceImpl");
        EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager());
    }/*w  w  w.  ja va 2s.c o m*/
}

From source file:org.jasig.jpa.OpenEntityManagerAspect.java

@Around("anyPublicMethod() && @annotation(openEntityManager)")
public Object openEntityManager(ProceedingJoinPoint pjp, OpenEntityManager openEntityManager) throws Throwable {
    final EntityManagerFactory emf = getEntityManagerFactory(openEntityManager);

    EntityManager em = getTransactionalEntityManager(emf);
    boolean isNewEm = false;
    if (em == null) {
        logger.debug("Opening JPA EntityManager in OpenEntityManagerAspect");
        em = createEntityManager(emf);//w ww  . j  a  va2s  .  c  o m
        isNewEm = true;
        TransactionSynchronizationManager.bindResource(emf, new EntityManagerHolder(em));
    } else {
        logger.debug("Using Existing JPA EntityManager in OpenEntityManagerAspect");
    }
    try {
        return pjp.proceed();
    } finally {
        if (isNewEm) {
            logger.debug("Closing JPA EntityManager in OpenEntityManagerAspect");
            TransactionSynchronizationManager.unbindResource(emf);
            EntityManagerFactoryUtils.closeEntityManager(em);
        }
    }
}

From source file:ar.com.zauber.commons.repository.closures.OpenEntityManagerClosure.java

/** @see Closure#execute(Object) */
public final void execute(final T t) {
    if (dryrun) {
        //permite evitar que se hagan commit() en el ambiente de test
        target.execute(t);/*from w ww  .j a  v a 2 s  . com*/
    } else {
        boolean participate = false;
        EntityTransaction transaction = null;

        if (TransactionSynchronizationManager.hasResource(emf)) {
            // Do not modify the EntityManager: just set the participate flag.
            participate = true;
        } else {
            try {
                final EntityManager em = emf.createEntityManager();
                if (openTx) {
                    if (!warningPrinted) {
                        logger.warn(
                                "The OpenEntityManagerClosure has Transactions enabled and is not recommended"
                                        + ". This behaviour will change in the future. Check setOpenTx(), ");
                    }
                    transaction = em.getTransaction();
                    transaction.begin();
                }

                TransactionSynchronizationManager.bindResource(emf, new EntityManagerHolder(em));
            } catch (PersistenceException ex) {
                throw new DataAccessResourceFailureException("Could not create JPA EntityManager", ex);
            }
        }

        if (transaction != null) {
            try {
                target.execute(t);
                if (transaction.getRollbackOnly()) {
                    transaction.rollback();
                } else {
                    transaction.commit();
                }
            } catch (final Throwable e) {
                if (transaction != null && transaction.isActive()) {
                    transaction.rollback();
                }
                throw new UnhandledException(e);
            } finally {
                if (!participate) {
                    final EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager
                            .unbindResource(emf);
                    EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager());
                }
            }
        } else {
            try {
                target.execute(t);
            } finally {
                if (!participate) {
                    final EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager
                            .unbindResource(emf);
                    EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager());
                }
            }

        }
    }
}

From source file:org.codehaus.grepo.query.jpa.repository.DefaultJpaRepository.java

/**
 * @param emHolder The current entity manager info.
 *//*from w  ww .  j  a v  a  2  s . c om*/
protected void closeNewEntityManager(CurrentEntityManagerHolder emHolder) {
    if (emHolder.isNewEm()) {
        logger.debug("Closing new EntityManager after generic repository execution");
        EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager());
    } else {
        // we have an existing entity manager
        if (emHolder.getPreviousFlushMode() != null) {
            logger.debug("Setting flushMode back to previous value '{}' after generic repository execution",
                    emHolder.getPreviousFlushMode());
            emHolder.getEntityManager().setFlushMode(emHolder.getPreviousFlushMode());
        }
    }
}

From source file:org.springframework.orm.jpa.support.AsyncRequestInterceptor.java

private void closeEntityManager() {
    if (this.timeoutInProgress || this.errorInProgress) {
        logger.debug("Closing JPA EntityManager after async request timeout/error");
        EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager());
    }//from w w  w. j  av  a  2  s.c  om
}