dnet-applications/apps/dnet-is-application/src/main/java/eu/dnetlib/OpenaireDBConfig.java

54 lines
2.0 KiB
Java
Raw Normal View History

2023-02-06 15:53:07 +01:00
package eu.dnetlib;
2022-12-12 15:55:35 +01:00
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 = {
2023-02-06 15:31:21 +01:00
"eu.dnetlib.dsm"
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)
2023-02-06 15:31:21 +01:00
.packages("eu.dnetlib.dsm.model")
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
}
}