我正在构建一个 Multi-Tenancy 应用程序,其中租户数据库配置存储在 Redis 中。根据请求,我将查询 Redis 以获取为该租户配置的数据库和模式,此应用程序构建在 spring boot 上。
我查看了 spring boot 的 JPA 示例,并进行了更多谷歌搜索以找到合适的解决方案,不幸的是,我找不到。
这真的可以使用此处提供的 JPA 示例吗? https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa
请建议我解决此问题的任何其他最佳方法
谢谢
最佳答案
Spring Data JPA 使用 JPA 注解来定义领域模型。这些 JPA 实体为您的数据库定义架构。显然,您不能更改这些实体,也不能在运行时更改数据库架构。
所以不,使用 Spring Boot + Spring Data JPA 组合不可能在运行时更新模式。
数据库连接(例如数据库 URL、用户名密码)可以更灵活。您需要以编程方式创建 DataSource bean,并以某种方式以编程方式定义每个租户的每个查询使用哪个数据源。但这不是 Spring 或 JPA 生态系统的要求,因此您可能会遇到很多问题。
我以前在这样的系统上工作,但我们通过 JDBC 使用纯 SQL 查询并以编程方式创建数据库连接以在运行时实现模式更改。
关于Spring-boot JPA连接到运行时提供数据库和模式的postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38098242/