Search in sources :

Example 1 with SmartPersistenceUnitInfo

use of org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo in project spring-framework by spring-projects.

the class LocalContainerEntityManagerFactoryBean method createNativeEntityManagerFactory.

@Override
protected EntityManagerFactory createNativeEntityManagerFactory() throws PersistenceException {
    PersistenceUnitManager managerToUse = this.persistenceUnitManager;
    if (this.persistenceUnitManager == null) {
        this.internalPersistenceUnitManager.afterPropertiesSet();
        managerToUse = this.internalPersistenceUnitManager;
    }
    this.persistenceUnitInfo = determinePersistenceUnitInfo(managerToUse);
    JpaVendorAdapter jpaVendorAdapter = getJpaVendorAdapter();
    if (jpaVendorAdapter != null && this.persistenceUnitInfo instanceof SmartPersistenceUnitInfo) {
        ((SmartPersistenceUnitInfo) this.persistenceUnitInfo).setPersistenceProviderPackageName(jpaVendorAdapter.getPersistenceProviderRootPackage());
    }
    PersistenceProvider provider = getPersistenceProvider();
    if (provider == null) {
        String providerClassName = this.persistenceUnitInfo.getPersistenceProviderClassName();
        if (providerClassName == null) {
            throw new IllegalArgumentException("No PersistenceProvider specified in EntityManagerFactory configuration, " + "and chosen PersistenceUnitInfo does not specify a provider class name either");
        }
        Class<?> providerClass = ClassUtils.resolveClassName(providerClassName, getBeanClassLoader());
        provider = (PersistenceProvider) BeanUtils.instantiateClass(providerClass);
    }
    if (logger.isInfoEnabled()) {
        logger.info("Building JPA container EntityManagerFactory for persistence unit '" + this.persistenceUnitInfo.getPersistenceUnitName() + "'");
    }
    EntityManagerFactory emf = provider.createContainerEntityManagerFactory(this.persistenceUnitInfo, getJpaPropertyMap());
    postProcessEntityManagerFactory(emf, this.persistenceUnitInfo);
    return emf;
}
Also used : SmartPersistenceUnitInfo(org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo) PersistenceProvider(javax.persistence.spi.PersistenceProvider) EntityManagerFactory(javax.persistence.EntityManagerFactory) PersistenceUnitManager(org.springframework.orm.jpa.persistenceunit.PersistenceUnitManager) DefaultPersistenceUnitManager(org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager)

Aggregations

EntityManagerFactory (javax.persistence.EntityManagerFactory)1 PersistenceProvider (javax.persistence.spi.PersistenceProvider)1 DefaultPersistenceUnitManager (org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager)1 PersistenceUnitManager (org.springframework.orm.jpa.persistenceunit.PersistenceUnitManager)1 SmartPersistenceUnitInfo (org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo)1