/** * Obtain the EntityManagerFactory for actual use. * @return the EntityManagerFactory (never {@code null}) * @throws IllegalStateException in case of no EntityManagerFactory set * @since 5.0 */ protected final EntityManagerFactory obtainEntityManagerFactory() { EntityManagerFactory emf = getEntityManagerFactory(); Assert.state(emf != null, "No EntityManagerFactory set"); return emf; }
/** * Obtain the EntityManagerFactory for actual use. * @return the EntityManagerFactory (never {@code null}) * @throws IllegalStateException in case of no EntityManagerFactory set * @since 5.0 */ protected final EntityManagerFactory obtainEntityManagerFactory() { EntityManagerFactory emf = getEntityManagerFactory(); Assert.state(emf != null, "No EntityManagerFactory set"); return emf; }
/** * Eagerly initialize the JPA dialect, creating a default one * for the specified EntityManagerFactory if none set. * Auto-detect the EntityManagerFactory's DataSource, if any. */ @Override public void afterPropertiesSet() { if (getEntityManagerFactory() == null) { throw new IllegalArgumentException("'entityManagerFactory' or 'persistenceUnitName' is required"); } if (getEntityManagerFactory() instanceof EntityManagerFactoryInfo) { EntityManagerFactoryInfo emfInfo = (EntityManagerFactoryInfo) getEntityManagerFactory(); DataSource dataSource = emfInfo.getDataSource(); if (dataSource != null) { setDataSource(dataSource); } JpaDialect jpaDialect = emfInfo.getJpaDialect(); if (jpaDialect != null) { setJpaDialect(jpaDialect); } } }
/** * Retrieves an EntityManagerFactory by persistence unit name, if none set explicitly. * Falls back to a default EntityManagerFactory bean if no persistence unit specified. * @see #setPersistenceUnitName */ @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { if (getEntityManagerFactory() == null) { if (!(beanFactory instanceof ListableBeanFactory)) { throw new IllegalStateException("Cannot retrieve EntityManagerFactory by persistence unit name " + "in a non-listable BeanFactory: " + beanFactory); } ListableBeanFactory lbf = (ListableBeanFactory) beanFactory; setEntityManagerFactory(EntityManagerFactoryUtils.findEntityManagerFactory(lbf, getPersistenceUnitName())); } }
@PostConstruct public void init() { if (getTransactionManager() instanceof JpaTransactionManager) { em = ((JpaTransactionManager) getTransactionManager()).getEntityManagerFactory().createEntityManager(); } }
/** * Eagerly initialize the JPA dialect, creating a default one * for the specified EntityManagerFactory if none set. * Auto-detect the EntityManagerFactory's DataSource, if any. */ @Override public void afterPropertiesSet() { if (getEntityManagerFactory() == null) { throw new IllegalArgumentException("'entityManagerFactory' or 'persistenceUnitName' is required"); } if (getEntityManagerFactory() instanceof EntityManagerFactoryInfo) { EntityManagerFactoryInfo emfInfo = (EntityManagerFactoryInfo) getEntityManagerFactory(); DataSource dataSource = emfInfo.getDataSource(); if (dataSource != null) { setDataSource(dataSource); } JpaDialect jpaDialect = emfInfo.getJpaDialect(); if (jpaDialect != null) { setJpaDialect(jpaDialect); } } }
/** * Retrieves an EntityManagerFactory by persistence unit name, if none set explicitly. * Falls back to a default EntityManagerFactory bean if no persistence unit specified. * @see #setPersistenceUnitName */ @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { if (getEntityManagerFactory() == null) { if (!(beanFactory instanceof ListableBeanFactory)) { throw new IllegalStateException("Cannot retrieve EntityManagerFactory by persistence unit name " + "in a non-listable BeanFactory: " + beanFactory); } ListableBeanFactory lbf = (ListableBeanFactory) beanFactory; setEntityManagerFactory(EntityManagerFactoryUtils.findEntityManagerFactory(lbf, getPersistenceUnitName())); } }
protected Site retrieveSiteByIdentifier(final String identifier, final boolean persistentResult) { //Since the methods on this class are frequently called during regular page requests and transactions are expensive, //only run the operation under a transaction if there is not already an entity manager in the view if (identifier == null) { return null; } final Site[] response = new Site[1]; transUtil.runOptionalTransactionalOperation(new StreamCapableTransactionalOperationAdapter() { @Override public void execute() throws Throwable { Site site = siteDao.retrieveSiteByIdentifier(identifier); if (persistentResult) { response[0] = site; } else { response[0] = getNonPersistentSite(site); } } }, RuntimeException.class, !TransactionSynchronizationManager.hasResource(((JpaTransactionManager) transUtil.getTransactionManager()).getEntityManagerFactory())); return response[0]; }
@Override public void runOptionalEntityManagerInViewOperation(Runnable runnable) { EntityManagerFactory emf = ((JpaTransactionManager) getTransactionManager()).getEntityManagerFactory(); boolean isEntityManagerInView = TransactionSynchronizationManager.hasResource(emf); try { if (!isEntityManagerInView) { EntityManager em = emf.createEntityManager(); EntityManagerHolder emHolder = new EntityManagerHolder(em); TransactionSynchronizationManager.bindResource(emf, emHolder); } runnable.run(); } finally { if (!isEntityManagerInView) { EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager.unbindResource(emf); EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager()); } } }
@Override protected TransactionStatus startTransaction(int propagationBehavior, int isolationLevel, boolean readOnly, PlatformTransactionManager transactionManager) { BroadleafRequestContext context = BroadleafRequestContext.getBroadleafRequestContext(); if (context.getAdditionalProperties().containsKey(FAILURE_MODE_KEY)) { String failureModePU = (String) context.getAdditionalProperties().get(FAILURE_MODE_PU); String checkClassName = failureModePU.equals("blPU")?blPUCheckClassName:blEventPUCheckClassName; if (((HibernateEntityManagerFactory) ((JpaTransactionManager) transactionManager).getEntityManagerFactory()) .getSessionFactory().getAllClassMetadata().containsKey(checkClassName)){ throw (RuntimeException) context.getAdditionalProperties().get(FAILURE_MODE_EXCEPTION); } } return super.startTransaction(propagationBehavior, isolationLevel, readOnly, transactionManager); }
/** * Complete the scope of the EntityManager-In-View operation. See {@link #startView(Long, String)}. */ public void endView() { EntityManagerFactory emf = ((JpaTransactionManager) transUtil.getTransactionManager()).getEntityManagerFactory(); boolean isEntityManagerInView = TransactionSynchronizationManager.hasResource(emf); if (isEntityManagerInView) { Stack<Integer> stack = (Stack<Integer>) TransactionSynchronizationManager.getResource("emStack"); if (stack.size() <= 1) { EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager.unbindResource(emf); EntityManagerFactoryUtils.closeEntityManager(emHolder.getEntityManager()); TransactionSynchronizationManager.unbindResource("emStack"); ThreadLocalManager.remove(); } else { stack.pop(); } } }
EntityManagerFactory emf = ((JpaTransactionManager) transUtil.getTransactionManager()).getEntityManagerFactory(); boolean isEntityManagerInView = TransactionSynchronizationManager.hasResource(emf); if (!isEntityManagerInView) {
private SandBox findSandBox(Long siteId, String sandBoxName, boolean initialize) { if (initialize) { startView(siteId, sandBoxName); } try { if (DEFAULT_SB.equals(sandBoxName)) { return getDefaultSandBox(siteId); } else { EntityManagerFactory emf = ((JpaTransactionManager) transUtil.getTransactionManager()).getEntityManagerFactory(); EntityManagerHolder emHolder = (EntityManagerHolder) TransactionSynchronizationManager.getResource(emf); return findSandBox(sandBoxName, emHolder.getEntityManager()); } } finally { if (initialize) { endView(); } } }
@Autowired private JpaTransactionManager transactionManager; public List<Book> findBookByCategory(String category){ EntityManagerFactory entityManagerFactory = transactionManager.getEntityManagerFactory(); EntityManager entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); List<Book> result = entityManager.createNamedQuery( "Book.findByCategory", Book.class ) .setParameter("category", category) .getResultList(); entityManager.getTransaction().commit(); entityManager.close(); return result; }
private EntityManager createEntityManager() { EntityManagerFactory entityManagerFactory = transactionManager.getEntityManagerFactory(); if (entityManagerFactory instanceof EntityManagerFactoryInfo) { entityManagerFactory = ((EntityManagerFactoryInfo) entityManagerFactory).getNativeEntityManagerFactory(); } Map<String, Object> properties = transactionManager.getJpaPropertyMap(); return !CollectionUtils.isEmpty(properties) ? entityManagerFactory.createEntityManager(properties) : entityManagerFactory.createEntityManager(); } }
JpaTransactionManager tm = context.getBean(JpaTransactionManager.class); EntityManagerFactory emf = tm.getEntityManagerFactory(); TransactionTemplate template = new TransactionTemplate(tm); template.execute(status -> { EntityManager em = EntityManagerFactoryUtils.getTransactionalEntityManager(emf); Department department = new Department(); department.setId(15); department.setName("Engineering"); em.persist(department); return department; });
@Override public void unbindResource() { EntityManagerHolder entityManagerHolder = (EntityManagerHolder) TransactionSynchronizationManager.unbindResourceIfPossible(transactionManager.getEntityManagerFactory()); EntityManagerFactoryUtils.closeEntityManager(entityManagerHolder.getEntityManager()); }
@Override protected Connection getConnectionFromTransactionManager() { EntityManager entityManager = createEntityManager(); Connection result = entityManager.unwrap(SessionImplementor.class).connection(); TransactionSynchronizationManager.bindResource(transactionManager.getEntityManagerFactory(), new EntityManagerHolder(entityManager)); return result; }
public void initStartDisposeAndLoadSession() { try { EntityManager em = txm.getEntityManagerFactory().createEntityManager(); // create new ksession with kstore KieSession ksession = kstore.newKieSession(kbase, null, getEnvironment()); sessionId = ksession.getIdentifier(); logger.debug("\n\tSession id: " + sessionId + "\n"); ksession.getWorkItemManager().registerWorkItemHandler("testWorkItemHandler", workItemHandler); ksession.startProcess("timer-flow", null); // wait for process to start and for first timer to finish waitForOtherThread(); ksession.dispose(); } catch (Exception ex) { throw new IllegalStateException("The endTheProcess method has been interrupted", ex); } }
public void initStartDisposeAndLoadSession() { try { EntityManager em = txm.getEntityManagerFactory().createEntityManager(); // create new ksession with kstore KieSession ksession = kstore.newKieSession(kbase, null, getEnvironment()); sessionId = ksession.getIdentifier(); logger.debug("\n\tSession id: " + sessionId + "\n"); ksession.getWorkItemManager().registerWorkItemHandler("testWorkItemHandler", workItemHandler); ksession.startProcess("timer-flow", null); // wait for process to start and for first timer to finish waitForOtherThread(); ksession.dispose(); } catch (Exception ex) { throw new IllegalStateException("The endTheProcess method has been interrupted", ex); } }