在一个应用程序中创建多个Spring Data JPA数据源连接

时间:2017-01-26 00:36:06

标签: java hibernate spring-boot spring-data spring-data-jpa

我需要使用单个ResourceServer(REST服务器)动态创建并连接到数百个数据库。 REST控制器会执行以下操作:

@RequestMapping("/teachers")
public List<Teacher> teachers(@RequestParam(value="db", defaultValue="db") String db) {
    //Look up the correct datasource
    DataSource ds = DSSources.get(db);
    //Associate the datasource with the repository
    ...
    //Return the teachers from the database using 
    //the TeacherRepository (Spring Data JPA Repository)
    return TeacherRepository.getAllTeachers();
}

我认为DSSources是包含DataSource实例的Map<String, Datasource。如何以编程方式创建数据源?一旦创建它们,它们如何与Spring Data JPA存储库相关联?所有数据库都将共享一组通用的存储库。

1 个答案:

答案 0 :(得分:0)

将数据源存储在Map中并不是一个好的解决方案,您必须考虑数据源失败并重新创建它们。

您需要的是多租户。如果您在JPA下使用Hibernate,则可以使用Hibernate Multi Tenancy。我很确定其他ORM也提供多租户功能。