private void initializeEntityManagerFactories(InitContext initContext, JpaConfig jpaConfig) { EntityManagerFactoryFactory entityManagerFactoryFactory = new EntityManagerFactoryFactory( initContext.dependency(JdbcProvider.class), getApplication()); for (Map.Entry<String, JpaConfig.PersistenceUnitConfig> entry : jpaConfig.getUnits().entrySet()) { String persistenceUnitName = entry.getKey(); JpaConfig.PersistenceUnitConfig persistenceUnitConfig = entry.getValue(); persistenceUnitConfig, scannedClasses, jpaConfig.isAllClassesInUnit() && jpaConfig.getUnits().size() == 1); } else { emf = entityManagerFactoryFactory.createEntityManagerFactory( LOGGER.info("Created {} JPA unit(s)", jpaConfig.getUnits().size());
@Override @SuppressWarnings("unchecked") public InitState initialize(InitContext initContext) { JpaConfig jpaConfig = getConfiguration(JpaConfig.class); if (businessAvailable) { detectJpaRepositoryFactories(initContext); } if (!jpaConfig.getUnits().isEmpty()) { initializeEntityManagerFactories(initContext, jpaConfig); } else { LOGGER.info("No JPA persistence unit configured"); } return InitState.INITIALIZED; }
@Override public TransactionMetadata resolve(MethodInvocation methodInvocation, TransactionMetadata defaults) { Optional<JpaUnit> jpaUnitOptional = JpaUnitResolver.INSTANCE .apply(methodInvocation.getMethod()); if (jpaUnitOptional.isPresent() || JpaTransactionHandler.class.equals(defaults.getHandler())) { TransactionMetadata result = new TransactionMetadata(); result.setHandler(JpaTransactionHandler.class); result.setExceptionHandler(JpaExceptionHandler.class); if (jpaUnitOptional.isPresent() && !Strings.isNullOrEmpty(jpaUnitOptional.get().value())) { result.setResource(jpaUnitOptional.get().value()); } else { String defaultUnit = application.getConfiguration().get(JpaConfig.class).getDefaultUnit(); if (!Strings.isNullOrEmpty(defaultUnit)) { result.setResource(defaultUnit); } else { throw SeedException.createNew(JpaErrorCode.NO_JPA_UNIT_SPECIFIED_FOR_TRANSACTION) .put("method", methodInvocation.getMethod().toString()); } } return result; } return null; } }