2022-12-12 15:55:35 +01:00
|
|
|
package eu.dnetlib.is;
|
|
|
|
|
|
|
|
import javax.persistence.EntityManagerFactory;
|
|
|
|
import javax.sql.DataSource;
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
|
|
import org.springframework.boot.jdbc.DataSourceBuilder;
|
|
|
|
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
2022-12-13 08:51:08 +01:00
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
2022-12-12 15:55:35 +01:00
|
|
|
import org.springframework.orm.jpa.JpaTransactionManager;
|
|
|
|
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
|
|
import org.springframework.transaction.PlatformTransactionManager;
|
|
|
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
|
|
|
|
|
|
|
@Configuration
|
|
|
|
@EnableTransactionManagement
|
|
|
|
@EnableJpaRepositories(entityManagerFactoryRef = "openaireEntityManagerFactory", transactionManagerRef = "openaireTransactionManager", basePackages = {
|
2022-12-13 08:51:08 +01:00
|
|
|
"eu.dnetlib.data.openaire"
|
2022-12-12 15:55:35 +01:00
|
|
|
})
|
|
|
|
public class OpenaireDBConfig {
|
|
|
|
|
|
|
|
@Bean(name = "openaireDataSource")
|
|
|
|
@ConfigurationProperties(prefix = "openaire.datasource")
|
|
|
|
public DataSource dataSource() {
|
|
|
|
return DataSourceBuilder.create().build();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Bean(name = "openaireEntityManagerFactory")
|
|
|
|
public LocalContainerEntityManagerFactoryBean openaireEntityManagerFactory(
|
|
|
|
final EntityManagerFactoryBuilder builder,
|
2022-12-13 08:51:08 +01:00
|
|
|
@Qualifier("openaireDataSource") final DataSource ds) {
|
2022-12-12 15:55:35 +01:00
|
|
|
return builder
|
2022-12-13 08:51:08 +01:00
|
|
|
.dataSource(ds)
|
|
|
|
.packages("eu.dnetlib.data.openaire")
|
2022-12-12 15:55:35 +01:00
|
|
|
.persistenceUnit("openaire")
|
|
|
|
.build();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Bean(name = "openaireTransactionManager")
|
|
|
|
public PlatformTransactionManager opeanaireTransactionManager(
|
2022-12-13 08:51:08 +01:00
|
|
|
@Qualifier("openaireEntityManagerFactory") final EntityManagerFactory emf) {
|
|
|
|
return new JpaTransactionManager(emf);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Bean(name = "openaireJdbcTemplate")
|
|
|
|
public JdbcTemplate jdbcTemplate1(@Qualifier("openaireDataSource") final DataSource ds) {
|
|
|
|
return new JdbcTemplate(ds);
|
2022-12-12 15:55:35 +01:00
|
|
|
}
|
|
|
|
}
|