Spring数据库JPA在两个数据库仓库中使用

问题描述:

我想使用spring data jpa repository。我必须连接到2个数据库。我已经发现了很多类似的问题。但大多数答案都是使用实体管理器而不是存储库。 例如Spring数据库JPA在两个数据库仓库中使用

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

但我想使用弹簧数据jpa的存储库。我如何在applicationContext.xml中进行配置? 我的2个数据库是MySQL,一个是本地的另一个是远程服务器。

您可以将这些存储库分为不同的包。然后它可以创建两个数据库的配置与不同的团队经理工厂和事务管理器。

例如第一配置:

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

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

第二配置将是相似的。

你没有把许多细节问题,但如果你需要切换数据库为相同的存储库(例如对于不同的语言环境),您可以使用AbstractRoutingDataSource类将定义determineCurrentLookupKey方法。