Добрый день всем.
Столкнулся с такой проблемой.
В текущем проекте используется две базы данных, Postgress, и ClickHouse.
Соответсвенно ClickHouse не имеет прямой интеграции с Spring.
Я смог интегрировать ClickHouse с помощью стороннего драйвера. Однако столкнулся с проблемой, что обе базы данны вместе не хотят работать. Все примеры что я видел в интернете, показывают как использовать две базы данных, которые уже имеют интеграцию с Spring. Как мне все же заставить их работать вместе?
Код файла Properties
####Spring Configuration####
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
####Postgress DB ####
#spring.pg.datasource.driver-class-name=org.postgresql.Driver
spring.pg.datasource.url=jdbc:postgresql://localhost:5432/java_db
spring.pg.datasource.username=****
spring.pg.datasource.password=****
####
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
####
#second db
spring.ch.datasource.url=jdbc:clickhouse://127.0.0.1:9000
spring.ch.datasource.driverClassName=com.github.housepower.jdbc.ClickHouseDriver
Включение базы данных Postgress основной, так же тут попытка добавить второй базой ClickHouse.Такой код компилируется , но все методы работают от имени Postgress в таком варианте.
import com.zaxxer.hikari.HikariDataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.transaction.annotation.EnableTransactionManagement;
//Adding first database(Postgress) to Spring config, Properties takes in application.properties
@Configuration
@EnableTransactionManagement
public class ConfigPG {
@Bean
@Primary
@ConfigurationProperties("spring.pg.datasource")
public DataSourceProperties firstDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("spring.pg.datasource.configuration")
public HikariDataSource firstDataSource() {
return firstDataSourceProperties().initializeDataSourceBuilder()
.type(HikariDataSource.class).build();
}
@Bean
@ConfigurationProperties("spring.ch.datasource")
public DataSourceProperties secondDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("spring.ch.datasource.configuration")
public BasicDataSource secondDataSource() {
return secondDataSourceProperties().initializeDataSourceBuilder()
.type(BasicDataSource.class).build();
}
}
И собственно подключение к базе ClickHouse , которое было организовано ранее.
@Configuration
@EnableScheduling
@EnableTransactionManagement
@ComponentScan("com.github.housepower")
public class ConfigurationClickHouse {
@Bean
public DataSource chDatasource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.github.housepower.jdbc.ClickHouseDriver");
dataSource.setUrl("jdbc:clickhouse://localhost:9000");
return dataSource;
}
@Bean
public JdbcTemplate chJDBC(DataSource chDatasource) {
return new JdbcTemplate(chDatasource);
}