Spring-boot JPA 连接到 postgres,其中在运行时提供数据库和模式
Posted
技术标签:
【中文标题】Spring-boot JPA 连接到 postgres,其中在运行时提供数据库和模式【英文标题】:Spring-boot JPA connect to postgres where database and schema are provided at runtime 【发布时间】:2016-11-01 01:57:22 【问题描述】:我正在构建一个多租户应用程序,其中租户数据库配置存储在 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
请建议我解决此问题的任何其他最佳方法
谢谢
【问题讨论】:
【参考方案1】:Spring Data JPA 使用 JPA 注释来定义域模型。这些 JPA 实体为您的数据库定义模式。显然,您无法更改这些实体,也无法在运行时更改 DB 架构。
所以不,使用 Spring Boot + Spring Data JPA 组合无法在运行时更新架构。
数据库连接(例如 DB URL、用户名密码)可以更加灵活。您需要以编程方式创建 DataSource bean,并以某种方式以编程方式定义每个租户的每个查询要使用的数据源。但这不是 Spring 和 JPA 生态系统的要求,因此您可能会遇到很多问题。
我以前在这样的系统上工作过,但我们通过 JDBC 使用普通 SQL 查询,并以编程方式创建数据库连接以实现运行时的架构更改。
【讨论】:
以上是关于Spring-boot JPA 连接到 postgres,其中在运行时提供数据库和模式的主要内容,如果未能解决你的问题,请参考以下文章
无法将 spring-boot 2 服务连接到不同容器中的 mysql
使用 spring-boot 连接到 spring-batch 和应用程序数据库