2
respostas

Testar aplicação Spring utilizando 2 databases

Como faço para rodar meu teste acessando mais de 1 database?

Em produção eu tenho as databases prod1 e prod2, onde tenho as tabelas prod1.tabela1 e prod2.tabela2

Criei teste1 para testar as tabelas de prod1 e teste2 para testar as tabelas de prod2

Meu DataSource aponta somente para teste1

    @Bean
    @Profile("teste")
    public DataSource getDataSource() {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/teste1?autoReconnetForPools=true");
        dataSource.setUser("root");
        dataSource.setPassword("root");
        return dataSource;
    }

Não sei como proceder... Alguém me ajuda?

2 respostas

Tente criar um nova classe para especificar um banco de dados diferente. Use a mesma configuração que esta. Na hora da chamada é só especificar de qual banco de dados você deseja realizar as operações. Você possuí:

 @Profile("teste")

deverá criar:

@Profile("teste2") Em outra classe.

Porém vai depender muito da configuração e de quais recursos você está utilizando. por exemplo o controle de transação. mas tente fazer desta forma, se não funcionar nos dia aqui.

Mas como ele sabe a qual database a minha tabela pertence? Exemplo..

@Entity
@Table(name = "numero")
public class Numero {
    // ...
}

Como o hibernate sabe se essa entidade pertence a teste1 ou teste2?