Spring boot Spring数据JPA多数据源
我一直在遵循这个链接,试图配置两个或多个数据源 它解释了如何定义两个数据源,但没有解释在查询时如何实际使用它们 我已经创建了配置类并在application.prop文件中添加了prop。但如何在回购功能/服务功能中定义它们 控制器 应用程序属性 此外,我不想为不同的数据源设置单独的存储库Spring boot Spring数据JPA多数据源,spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,我一直在遵循这个链接,试图配置两个或多个数据源 它解释了如何定义两个数据源,但没有解释在查询时如何实际使用它们 我已经创建了配置类并在application.prop文件中添加了prop。但如何在回购功能/服务功能中定义它们 控制器 应用程序属性 此外,我不想为不同的数据源设置单独的存储库 我有不同的读写数据库。因此,我的所有插入查询将在一台服务器上,而读取查询将在另一台服务器上。如果我为读写创建不同的repo/服务,那么会有太多冗余代码请查看详细信息。您将使用包配置两个不同的数据源、单独的存储
我有不同的读写数据库。因此,我的所有插入查询将在一台服务器上,而读取查询将在另一台服务器上。如果我为读写创建不同的repo/服务,那么会有太多冗余代码请查看详细信息。您将使用包配置两个不同的数据源、单独的存储库和模型,并为特定的包配置数据源。查看详细信息。您将使用软件包配置两个不同的数据源、独立的存储库和模型,并为特定的软件包配置数据源。显示查询代码?编辑问题以了解更多信息code@AnkitBansal,数据库是否相同,并且始终相同?例如,一个数据库是另一个数据库的读取副本?如果不是,不同的数据库结构会自动暗示它们不存储相同的精确数据。因此,两者都需要不同的实体,因此需要独立的存储库。是的,数据库是相似的副本,因此存储相同的数据,所以逻辑上我可以使用相同的实体&repo。这不能用JPA解决。有关MySQL特定的解决方案,请参阅,在该解决方案中,您可以保留一组实体和存储库。显示您的查询代码吗?编辑了以下问题:code@AnkitBansal,数据库是否相同,并且始终相同?例如,一个数据库是另一个数据库的读取副本?如果不是,不同的数据库结构会自动暗示它们不存储相同的精确数据。因此,两者都需要不同的实体,因此需要独立的存储库。是的,数据库是相似的副本,因此存储相同的数据,所以逻辑上我可以使用相同的实体&repo。这不能用JPA解决。有关MySQL特定的解决方案,请参阅,其中您可以保留一组实体和存储库。我必须使用相同的repo,即无法为diff DB创建diff repo。因此,您希望来自两个不同数据源的所有员工使用一个查询?我有用于读写的diff数据库。所以,虽然insert我将使用不同的数据库&用于读取查询,但我将使用第二个数据库,因为模块太多了。我不想为读写创建单独的回购/服务。太多多余的代码。@AnkitBansal,你能把这些细节添加到问题本身吗?这是一条非常重要的信息,读者可能不会阅读它,因为它现在位于对答案的评论中。我必须使用同一个repo,即无法为diff DB创建diff repo。因此,您希望来自两个不同数据源的所有员工使用一个查询?我有用于读写的diff数据库。所以,虽然insert我将使用不同的数据库&用于读取查询,但我将使用第二个数据库,因为模块太多了。我不想为读写创建单独的回购/服务。太多多余的代码。@AnkitBansal,你能把这些细节添加到问题本身吗?这是一条非常重要的信息,读者可能不会阅读它,因为现在它位于对答案的评论中。
public class EmpController {
@RequestMapping("/abcd")
public List<Employee> findAll() { return empService.findAll(); }
}
@Service
public class EmpService {
@Autowired
private EmpRepository empRepo;
public List<Employee> findAll() { return empRepo.findAll(); }
}
public interface EmpRepository extends JpaRepository<Employee, Long> {}
@Configuration
public class DataSourceConfiguration {
@Bean
@Primary
@ConfigurationProperties(prefix = "datasource.primary")
public DataSource numberMasterDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "datasource.secondary")
public DataSource provisioningDataSource() {
return DataSourceBuilder.create().build();
}
}
# Primary DataSource configuration
datasource.primary.url=jdbc:mysql://127.0.0.1:3306/jpa
datasource.primary.username=root
datasource.primary.password=root
# Any of the other Spring supported properties below...
# Secondary DataSource configuration
datasource.secondary.url=jdbc:mysql://127.0.0.1:3306/jpa2
datasource.secondary.username=root
datasource.secondary.password=root