I'm using Javers via Spring Boot. Is there a way to disable Javers for the second database?
Here is the java configuraions for implementing multiple datasources (Oracle & PostgreSQL). Javers must be disabled for Oracle
DB2Config
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "db2EntityManagerFactory",
transactionManagerRef = "db2TransactionManager",
basePackages = {"com.example.db2.repository"})
public class Db2Config {
@Autowired
private Environment env;
@Bean
@ConfigurationProperties(prefix = "spring.datasource.db2.javers")
public JaversSpringProperties db2JaversSpringProperties() {
return new JaversSqlProperties();
}
@Bean(name = "db2DataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "db2EntityManagerFactory")
public LocalContainerEntityManagerFactoryBean db2EntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("db2DataSource") DataSource db2DataSource) {
HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.hbm2ddl.auto",
env.getProperty("spring.datasource.db2.jpa.hibernate.ddl-auto"));
properties.put("hibernate.dialect",
env.getProperty("spring.datasource.db2.jpa.database-platform"));
return builder
.dataSource(db2DataSource)
.properties(properties)
.packages("com.example.db2.model")
.build();
}
@Bean(name = "db2TransactionManager")
public PlatformTransactionManager db2TransactionManager(
@Qualifier("db2EntityManagerFactory") EntityManagerFactory db2EntityManagerFactory) {
return new JpaTransactionManager(db2EntityManagerFactory);
}
}
DB1Config
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "db1EntityManagerFactory",
transactionManagerRef = "db1TransactionManager",
basePackages = {"com.example.db1.common.persistence.repository"},
repositoryFactoryBeanClass = EntityGraphJpaRepositoryFactoryBean.class)
public class DB1Config {
@Autowired
private Environment env;
@Primary
@Bean
@ConfigurationProperties(prefix = "spring.datasource.db1.javers")
public JaversSpringProperties db1JaversSpringProperties() {
return new JaversSqlProperties();
}
private static SpringLiquibase springLiquibase(
DataSource dataSource, LiquibaseProperties properties) {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(dataSource);
liquibase.setChangeLog(properties.getChangeLog());
liquibase.setContexts(properties.getContexts());
liquibase.setDefaultSchema(properties.getDefaultSchema());
liquibase.setDropFirst(properties.isDropFirst());
liquibase.setShouldRun(properties.isEnabled());
liquibase.setLabels(properties.getLabels());
liquibase.setChangeLogParameters(properties.getParameters());
liquibase.setRollbackFile(properties.getRollbackFile());
return liquibase;
}
@Bean(name = "db1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db1EntityManagerFactory")
public LocalContainerEntityManagerFactoryBean db1EntityManagerFactory(
EntityManagerFactoryBuilder builder, @Qualifier("db1DataSource") DataSource db1DataSource) {
HashMap<String, Object> properties = new HashMap<>();
properties.put(
"hibernate.hbm2ddl.auto", env.getProperty("spring.datasource.db1.jpa.hibernate.ddl-auto"));
properties.put(
"hibernate.dialect", env.getProperty("spring.datasource.db1.jpa.database-platform"));
properties.put("hibernate.physical_naming_strategy", env.getProperty("spring.datasource.db1.jpa.hibernate.naming.physical-strategy"));
properties.put("hibernate.globally_quoted_identifiers", env.getProperty("spring.datasource.db1.jpa.properties.hibernate.globally_quoted_identifiers"));
properties.put("hibernate.globally_quoted_identifiers_skip_column_definitions", env.getProperty("spring.datasource.db1.jpa.properties.hibernate.globally_quoted_identifiers_skip_column_definitions"));
return builder
.dataSource(db1DataSource)
.properties(properties)
.packages("com.example.db1.persistence")
.build();
}
@Bean(name = "db1TransactionManager")
public PlatformTransactionManager db1TransactionManager(
@Qualifier("db1EntityManagerFactory") EntityManagerFactory db1EntityManagerFactory) {
return new JpaTransactionManager(db1EntityManagerFactory);
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.db1.liquibase")
public LiquibaseProperties db1LiquibaseProperties() {
return new LiquibaseProperties();
}
@Bean
public SpringLiquibase db1Liquibase() {
return springLiquibase(db1DataSource(), db1LiquibaseProperties());
}
}
The second question how I can disable it for all datasources with java config?