58 lines
2.1 KiB
Java
58 lines
2.1 KiB
Java
package com.ehsaniara.multidatasource.configurations;
|
|
|
|
import com.zaxxer.hikari.HikariDataSource;
|
|
import org.hibernate.jpa.HibernatePersistenceProvider;
|
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
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 static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE;
|
|
|
|
/**
|
|
* @author Jay Ehsaniara, Dec 30 2019
|
|
*/
|
|
@Configuration
|
|
@ConfigurationProperties("spring.datasource-read")
|
|
@EnableTransactionManagement
|
|
@EnableJpaRepositories(
|
|
entityManagerFactoryRef = "entityManagerFactoryRead",
|
|
transactionManagerRef = "transactionManagerRead",
|
|
basePackages = {"com.ehsaniara.multidatasource.repository.readRepository"}
|
|
)
|
|
public class DataSourceConfigRead extends HikariConfigRead {
|
|
|
|
public DataSourceConfigRead(HikariReadProperties hikariReadProperties) {
|
|
super(hikariReadProperties);
|
|
}
|
|
|
|
@Bean
|
|
public HikariDataSource dataSourceRead() {
|
|
return new HikariDataSource(this);
|
|
}
|
|
|
|
@Bean
|
|
public LocalContainerEntityManagerFactoryBean entityManagerFactoryRead(
|
|
final HikariDataSource dataSourceRead) {
|
|
|
|
return new LocalContainerEntityManagerFactoryBean() {{
|
|
setDataSource(dataSourceRead);
|
|
setPersistenceProviderClass(HibernatePersistenceProvider.class);
|
|
setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
|
|
setPackagesToScan(MODEL_PACKAGE);
|
|
setJpaProperties(JPA_READ_PROPERTIES);
|
|
}};
|
|
}
|
|
|
|
@Bean
|
|
public PlatformTransactionManager transactionManagerRead(EntityManagerFactory entityManagerFactoryRead) {
|
|
return new JpaTransactionManager(entityManagerFactoryRead);
|
|
}
|
|
}
|