Skip to content

Instantly share code, notes, and snippets.

@sophea
Last active January 24, 2020 16:29
Show Gist options
  • Save sophea/7eb6f46ba01d37c25be487c1522acdfa to your computer and use it in GitHub Desktop.
Save sophea/7eb6f46ba01d37c25be487c1522acdfa to your computer and use it in GitHub Desktop.
SQLServer Config datasource
package com.sma.backend.multidb.config;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
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;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "sqlServerEntityManagerFactory",
transactionManagerRef = "sqlServerTransactionManager",
basePackages = "com.sma.backend.multidb.database.sqlserver.repository")
public class SqlServerConfig {
@Bean
@ConfigurationProperties(prefix = "sqlserver.datasource")
public DataSourceProperties sqlServerDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
public DataSource sqlServerDataSource(@Qualifier("sqlServerDataSourceProperties") DataSourceProperties dataSourceProperties) {
return dataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean(name = "sqlServerEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean sqlServerEntityManagerFactory(@Qualifier("sqlServerDataSource") DataSource sqlServerDataSource, EntityManagerFactoryBuilder builder) {
return builder.dataSource(sqlServerDataSource)
.packages("com.sma.backend.multidb.database.sqlserver.domain")
.persistenceUnit("sqlserver")
.build();
}
@Bean
public PlatformTransactionManager sqlServerTransactionManager(@Qualifier("sqlServerEntityManagerFactory")
EntityManagerFactory factory) {
return new JpaTransactionManager(factory);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment