package fr.openwide.core.jpa.config.spring;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
/**
* Configuration JPA qui se construit automatiquement à partir des clés de configuration par défaut
* (voir {@link DefaultJpaConfig})
*/
@Import(DefaultJpaConfig.class)
public abstract class AbstractConfiguredJpaConfig extends AbstractJpaConfig {
@Autowired
private DefaultJpaConfig defaultJpaConfig;
@Override
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
return JpaConfigUtils.entityManagerFactory(defaultJpaConfig.defaultJpaCoreConfigurationProvider());
}
/**
* Déclaration explicite de close comme destroyMethod (Spring doit la prendre en compte auto-magiquement même
* si non configurée).
*/
@Override
@Bean(destroyMethod = "close")
public DataSource dataSource() {
return JpaConfigUtils.dataSource(defaultJpaConfig.defaultDatabaseConnectionPoolConfigurationProvider());
}
}