package eu.eudat.migration.configuration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; import java.util.HashMap; import java.util.Objects; @Configuration @EnableJpaRepositories( basePackages = "eu.eudat.migration.dao", entityManagerFactoryRef = "roadmapEntityManagerFactory", transactionManagerRef = "roadmapTransactionManager" ) public class DMPRoadmapConfiguration { private final Environment env; @Autowired public DMPRoadmapConfiguration(Environment env) { this.env = env; } @Bean(name = "roadmapDataSource") public DataSource roadmapDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(Objects.requireNonNull(env.getProperty("roadmap.database.driver"))); dataSource.setUrl(env.getProperty("roadmap.database.url")); dataSource.setUsername(env.getProperty("roadmap.database.username")); dataSource.setPassword(env.getProperty("roadmap.database.password")); return dataSource; } @Bean(name = "roadmapEntityManagerFactory") public LocalContainerEntityManagerFactoryBean roadmapEntityManagerFactory(@Qualifier("roadmapDataSource") DataSource roadmapDataSource) { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(roadmapDataSource); em.setPackagesToScan("eu.eudat.migration.entities"); HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); HashMap properties = new HashMap<>(); properties.put("hibernate.dialect", env.getProperty("roadmap.hibernate.dialect")); properties.put("hibernate.hbm2ddl.auto", "none"); em.setJpaPropertyMap(properties); return em; } @Bean(name = "roadmapTransactionManager") public PlatformTransactionManager roadmapTransactionManager(@Qualifier("roadmapEntityManagerFactory") LocalContainerEntityManagerFactoryBean roadmapEntityManagerFactory) { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(roadmapEntityManagerFactory.getObject()); return transactionManager; } }