Можем ли мы использовать вторую базу данных для таблиц, связанных с аудитом javers? - PullRequest
0 голосов
/ 21 июня 2019

Я упомяну мою проблему.

Мне нужны две базы данных.DB1 для моих таблиц приложений DB2 для сохранения только проверенных таблиц jv _...

Чтобы решить эту проблему, я сделал следующее

`@Bean
    public ConnectionProvider jpaConnectionProvider() {
        OtherConnectionProvider other = new OtherConnectionProvider();
        try {
            other.setConnection(dataSource().getConnection());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return scp;
    }` 

OtherConnectionProvider - реализация org.javers.repository.sql.ConnectionProvider.dataSource () - это обычный javax.sql.Datasource.

После использования Spring игнорирует свойства базы данных, упомянутые в application.properties, и создает таблицы, связанные со схемой и javers, в этой новой схеме, поскольку у меня есть следующее вмое приложение. свойства.spring.jpa.hibernate.ddl-авто = создать

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Спасибо за ответ.Я исправил это следующим образом.См. https://www.baeldung.com/spring-data-jpa-multiple-databases. Но в ссылке упоминалось о двух конфигурациях базы данных.Одна из конфигураций, которая является Первичной, должна быть выбрана из application.properties.Вторая конфигурация базы данных может быть выбрана из конфигурации Spring, как упомянуто в URL https://javers.org/documentation/spring-integration/#jpa-entity-manager-integration.. Решение достаточно хитрое, так как стандартные свойства spring.datasource здесь не применимы.Кроме того, добавление свойств фиксации с помощью javers поможетЭто будет действовать как информация арендатора.Ниже приведен типичный код, в котором CustomJpaHibernateConnectionProvider является реализацией org.javers.repository.sql.ConnectionProvider

   @Bean
public ConnectionProvider jpaConnectionProvider() {
    CustomJpaHibernateConnectionProvider scp = new 
      CustomJpaHibernateConnectionProvider();
    try {
        scp.setConnection(dataSource().getConnection());
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return scp;
}

, и источник данных хотел бы этого.

 @Bean
    @ConfigurationProperties(prefix="spring.javers-datasource")
    public DataSource dataSource(){
        return DataSourceBuilder.create().build();
    }

Свойства источников данных не являются стандартными Spring bootсвойства.

spring.datasource.jdbcUrl = jdbc:postgresql://localhost/test
spring.datasource.username = postgres
spring.datasource.driverClassName=org.postgresql.Driver
0 голосов
/ 21 июня 2019

Настройка выделенной базы данных для данных аудита Javers проста для MongoDB (см. https://javers.org/documentation/spring-boot-integration/#starter-repository-configuration),, но нет готового решения для SQL. Основной проблемой является координация транзакций в двух независимых базах данных SQL.

См. Как настроить управление транзакциями для работы с 2 различными БД в Spring?

...