我需要使用单个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存储库相关联?所有数据库都将共享一组通用的存储库。
答案 0 :(得分:0)
将数据源存储在Map中并不是一个好的解决方案,您必须考虑数据源失败并重新创建它们。
您需要的是多租户。如果您在JPA下使用Hibernate,则可以使用Hibernate Multi Tenancy。我很确定其他ORM也提供多租户功能。