Created
April 9, 2023 10:52
-
-
Save sonus21/2116680b1f2c4ee249349ee56808b207 to your computer and use it in GitHub Desktop.
SqlDatabaseConfiguration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Configuration | |
@EnableTransactionManagement | |
@EnableJpaRepositories(basePackages = {"com.github.sonus21.readwrite.repositories"}) | |
@EntityScan(basePackages = "com.github.sonus21.readwrite.models.entities") | |
public class SqlDatabaseConfiguration { | |
private final DataSourceSecondaryConfig dataSourceSecondaryConfig; | |
private final DataSourcePrimaryConfig dataSourcePrimaryConfig; | |
@Autowired | |
public SqlDatabaseConfiguration(DataSourcePrimaryConfig dataSourcePrimaryConfig, DataSourceSecondaryConfig dataSourceSecondaryConfig) { | |
this.dataSourceSecondaryConfig = dataSourceSecondaryConfig; | |
this.dataSourcePrimaryConfig = dataSourcePrimaryConfig; | |
} | |
@Bean | |
protected DataSource primaryDatasource() { | |
return new HikariDataSource(dataSourcePrimaryConfig); | |
} | |
@Bean | |
protected DataSource secondaryDatasource() { | |
return new HikariDataSource(dataSourceSecondaryConfig); | |
} | |
@Bean | |
@Primary | |
public DataSource dataSource() { | |
Map<Object, Object> targetDataSources = new HashMap<>(); | |
DataSource primary = primaryDatasource(); | |
DataSource secondary = secondaryDatasource(); | |
targetDataSources.put(Constants.PRIMARY, primary); | |
targetDataSources.put(Constants.SECONDARY, secondary); | |
DatabaseRouter router = new DatabaseRouter(); | |
router.setTargetDataSources(targetDataSources); | |
router.setDefaultTargetDataSource(primary); | |
return router; | |
} | |
private Properties additionalProperties() { | |
Properties properties = new Properties(); | |
//properties.setProperty("hibernate.hbm2ddl.auto", "create"); | |
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect"); | |
properties.setProperty("hibernate.show_sql", "true"); | |
return properties; | |
} | |
@Bean | |
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) { | |
LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean(); | |
entityManager.setDataSource(dataSource); | |
entityManager.setPersistenceProviderClass(HibernatePersistenceProvider.class); | |
entityManager.setPackagesToScan("com.github.sonus21.readwrite.models.entities"); | |
entityManager.setJpaProperties(additionalProperties()); | |
return entityManager; | |
} | |
@Bean | |
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { | |
return new JpaTransactionManager(entityManagerFactory); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment