#1 Fixing Hikari configurations

This commit is contained in:
Jay
2020-03-01 22:57:02 -08:00
parent c58ebe8ed4
commit d1846c379b
7 changed files with 110 additions and 21 deletions

View File

@@ -3,21 +3,11 @@ package com.ehsaniara.multidatasource;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.Properties;
@SpringBootApplication @SpringBootApplication
public class DemoApplication { public class DemoApplication {
public final static String MODEL_PACKAGE = "com.ehsaniara.multidatasource.model"; public final static String MODEL_PACKAGE = "com.ehsaniara.multidatasource.model";
public final static Properties JPA_PROPERTIES = new Properties() {{
put("hibernate.dialect", "org.hibernate.dialect.PostgreSQL10Dialect");
put("hibernate.hbm2ddl.auto", "update");
put("hibernate.ddl-auto", "update");
put("show-sql", "true");
}};
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args); SpringApplication.run(DemoApplication.class, args);
} }

View File

@@ -1,6 +1,5 @@
package com.ehsaniara.multidatasource.configurations; package com.ehsaniara.multidatasource.configurations;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
import org.hibernate.jpa.HibernatePersistenceProvider; import org.hibernate.jpa.HibernatePersistenceProvider;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -14,7 +13,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory; import javax.persistence.EntityManagerFactory;
import static com.ehsaniara.multidatasource.DemoApplication.JPA_PROPERTIES;
import static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE; import static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE;
/** /**
@@ -28,10 +26,11 @@ import static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE;
transactionManagerRef = "transactionManagerRead", transactionManagerRef = "transactionManagerRead",
basePackages = {"com.ehsaniara.multidatasource.repository.readRepository"} basePackages = {"com.ehsaniara.multidatasource.repository.readRepository"}
) )
public class DataSourceConfigRead extends HikariConfig { public class DataSourceConfigRead extends HikariConfigRead {
public final static String PERSISTENCE_UNIT_NAME = "read";
public DataSourceConfigRead(HikariReadProperties hikariReadProperties) {
super(hikariReadProperties);
}
@Bean @Bean
public HikariDataSource dataSourceRead() { public HikariDataSource dataSourceRead() {
@@ -47,7 +46,7 @@ public class DataSourceConfigRead extends HikariConfig {
setPersistenceProviderClass(HibernatePersistenceProvider.class); setPersistenceProviderClass(HibernatePersistenceProvider.class);
setPersistenceUnitName(PERSISTENCE_UNIT_NAME); setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
setPackagesToScan(MODEL_PACKAGE); setPackagesToScan(MODEL_PACKAGE);
setJpaProperties(JPA_PROPERTIES); setJpaProperties(JPA_READ_PROPERTIES);
}}; }};
} }

View File

@@ -1,6 +1,5 @@
package com.ehsaniara.multidatasource.configurations; package com.ehsaniara.multidatasource.configurations;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
import org.hibernate.jpa.HibernatePersistenceProvider; import org.hibernate.jpa.HibernatePersistenceProvider;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -14,7 +13,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory; import javax.persistence.EntityManagerFactory;
import static com.ehsaniara.multidatasource.DemoApplication.JPA_PROPERTIES;
import static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE; import static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE;
/** /**
@@ -28,9 +26,11 @@ import static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE;
transactionManagerRef = "transactionManagerWrite", transactionManagerRef = "transactionManagerWrite",
basePackages = {"com.ehsaniara.multidatasource.repository.writeRepository"} basePackages = {"com.ehsaniara.multidatasource.repository.writeRepository"}
) )
public class DataSourceConfigWrite extends HikariConfig { public class DataSourceConfigWrite extends HikariConfigWrite {
public final static String PERSISTENCE_UNIT_NAME = "write"; public DataSourceConfigWrite(HikariWriteProperties hikariWriteProperties) {
super(hikariWriteProperties);
}
@Bean @Bean
public HikariDataSource dataSourceWrite() { public HikariDataSource dataSourceWrite() {
@@ -46,7 +46,7 @@ public class DataSourceConfigWrite extends HikariConfig {
setPersistenceProviderClass(HibernatePersistenceProvider.class); setPersistenceProviderClass(HibernatePersistenceProvider.class);
setPersistenceUnitName(PERSISTENCE_UNIT_NAME); setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
setPackagesToScan(MODEL_PACKAGE); setPackagesToScan(MODEL_PACKAGE);
setJpaProperties(JPA_PROPERTIES); setJpaProperties(JPA_WRITE_PROPERTIES);
}}; }};
} }

View File

@@ -0,0 +1,27 @@
package com.ehsaniara.multidatasource.configurations;
import com.zaxxer.hikari.HikariConfig;
import java.util.Properties;
public class HikariConfigRead extends HikariConfig {
protected final HikariReadProperties hikariReadProperties;
protected final String PERSISTENCE_UNIT_NAME = "read";
protected final Properties JPA_READ_PROPERTIES = new Properties() {{
put("hibernate.dialect", "org.hibernate.dialect.PostgreSQL10Dialect");
put("hibernate.hbm2ddl.auto", "update");
put("hibernate.ddl-auto", "update");
put("show-sql", "true");
}};
protected HikariConfigRead(HikariReadProperties hikariReadProperties) {
this.hikariReadProperties = hikariReadProperties;
setPoolName(this.hikariReadProperties.getPoolName());
setMinimumIdle(this.hikariReadProperties.getMinimumIdle());
setMaximumPoolSize(this.hikariReadProperties.getMaximumPoolSize());
setIdleTimeout(this.hikariReadProperties.getIdleTimeout());
}
}

View File

@@ -0,0 +1,27 @@
package com.ehsaniara.multidatasource.configurations;
import com.zaxxer.hikari.HikariConfig;
import java.util.Properties;
public class HikariConfigWrite extends HikariConfig {
protected final HikariWriteProperties hikariWriteProperties;
protected final String PERSISTENCE_UNIT_NAME = "write";
protected final Properties JPA_WRITE_PROPERTIES = new Properties() {{
put("hibernate.dialect", "org.hibernate.dialect.PostgreSQL10Dialect");
put("hibernate.hbm2ddl.auto", "update");
put("hibernate.ddl-auto", "update");
put("show-sql", "true");
}};
protected HikariConfigWrite(HikariWriteProperties hikariWriteProperties) {
this.hikariWriteProperties = hikariWriteProperties;
setPoolName(this.hikariWriteProperties.getPoolName());
setMinimumIdle(this.hikariWriteProperties.getMinimumIdle());
setMaximumPoolSize(this.hikariWriteProperties.getMaximumPoolSize());
setIdleTimeout(this.hikariWriteProperties.getIdleTimeout());
}
}

View File

@@ -0,0 +1,23 @@
package com.ehsaniara.multidatasource.configurations;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Setter
@Getter
@Configuration
@PropertySource("classpath:application.yml")
@ConfigurationProperties("spring.datasource-read.hikari")
public class HikariReadProperties {
private String poolName;
private int minimumIdle;
private int maximumPoolSize;
private int idleTimeout;
}

View File

@@ -0,0 +1,23 @@
package com.ehsaniara.multidatasource.configurations;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Setter
@Getter
@Configuration
@PropertySource("classpath:application.yml")
@ConfigurationProperties("spring.datasource-write.hikari")
public class HikariWriteProperties {
private String poolName;
private int minimumIdle;
private int maximumPoolSize;
private int idleTimeout;
}