#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.autoconfigure.SpringBootApplication;
import java.util.Properties;
@SpringBootApplication
public class DemoApplication {
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) {
SpringApplication.run(DemoApplication.class, args);
}

View File

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

View File

@@ -1,6 +1,5 @@
package com.ehsaniara.multidatasource.configurations;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.hibernate.jpa.HibernatePersistenceProvider;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -14,7 +13,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory;
import static com.ehsaniara.multidatasource.DemoApplication.JPA_PROPERTIES;
import static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE;
/**
@@ -28,9 +26,11 @@ import static com.ehsaniara.multidatasource.DemoApplication.MODEL_PACKAGE;
transactionManagerRef = "transactionManagerWrite",
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
public HikariDataSource dataSourceWrite() {
@@ -46,7 +46,7 @@ public class DataSourceConfigWrite extends HikariConfig {
setPersistenceProviderClass(HibernatePersistenceProvider.class);
setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
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;
}