Boss Yoon
Boss Yoon

Reputation: 141

Spring Data JPA in two repositories for databases

I want to use spring data jpa repository. And I have to connect to 2 databases. I already found so many similar questions. But most of answers are using Entity manager instead of repository. For example

@persistenceContext(unitname = "example")
Entitymanager em;

But I want to use repository of spring data jpa. How can I configure in applicationContext.xml? My 2 databases are MySQL and one is local another is remote server.

Upvotes: 1

Views: 175

Answers (1)

rocky
rocky

Reputation: 5004

You can separate those repositories in different packages. Then its possible to create two DB's configurations with different enity manager factory and transaction manager.

For example first config:

@Configuration
@EnableJpaRepositories(basePackages = "com.firstpackage",
    entityManagerFactoryRef = "entityManagerFactoryDb1",
    transactionManagerRef = "transactionManagerDb1")
public class DB1Config {
   @Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactoryDb1() {
    ...
}

public JpaTransactionManager transactionManagerDb1() {
    ...
}
public DataSource dataSourceDb11() {
    ...
}

Second config would be similar.

You didnt put many details in question, but in case you need to switch databases for same repositories ( for example for different locales ) you can use AbstractRoutingDataSource class which will define determineCurrentLookupKey method.

Upvotes: 2

Related Questions