Spring-boot JPA连接到运行时提供数据库和模式的postgres

标签 spring postgresql jpa spring-boot spring-data

我正在构建一个 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/

相关文章:

sql - 如何从表中选择距离小于 x 的对?

java - JPA 托管实体 : Is a searched Entity still a Managed Entity

java - 如何在 Spring/Hibernate 事务中包装 Wicket 页面渲染?

java - 长字符串缺少 Spring post 请求参数

java - 当 thenReturn 使用 any() 时,Mockito 出现错误 "Value must not be null"

Spring JUnit JPA 事务不回滚

ruby-on-rails - 按中间表的操作计数组

java - Spring Security 中基于角色的访问拒绝处理 - 如何?

postgresql - 将 squirrel sql 与 postgresql 一起使用 : backslash syntax error?

java - 如何将带有子查询的 SQL 查询转换为 JPA 标准生成器