database - 在 Spring JPA 应用程序中使用多个数据库

标签 database spring authentication jpa persistence

我有一个支持单个客户的 Spring 应用程序。

我想扩展此应用程序以支持多个客户,其中每个客户数据库都存储在一个单独的数据库中。数据库的架构对于每个客户都是相同的,相同的 DAO 和业务逻辑应该保持不变。

我将如何使用 Spring/JPA 完成此任务?我是否需要有多个持久性上下文并根据当前登录的用户连接到适当的实体管理器工厂?是否有任何实现与此类似的示例?

最佳答案

我建议不要在单个应用程序下运行单独的数据库。如果重新设计数据模型以合并多个客户不是一种选择,为什么不运行应用程序服务器/Web 容器的多个实例,每个客户一个?否则,您将不得不应对共享平台和独立数据库的缺点。

如果有多个客户数据库和一个应用程序,您的代码将变得更加复杂,您无法保证客户数据是完全隔离的(例如,由于应用程序中的错误,向客户显示了错误的数据,因此没有太多受益于隔离每个客户),您将面临维护每个客户数据库的噩梦。此外,通过拥有不同的数据库,您几乎可以保证某个尖头头发的人会为客户 A 要求一些定制功能,同时让客户 B 的功能保持不变,因为“......这很容易,因为我们有不同的数据库...”,忘记应用程序是共享的。

关于database - 在 Spring JPA 应用程序中使用多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117071/

相关文章:

java - 无法读取 HTTP 消息。缺少必需的请求正文

react-native - 在 React Native 上通过 Auth0 进行 Instagram 身份验证(不是登录)?

ios - 关于身份验证问题的快速状态代码 401

ios - 如何使用 Swift 在 Xcode 中设置具有两个屏幕的注册表单

Java 应用程序显示大量图表和统计数据,存储数据?

database - ComponentACE 绝对数据库的密码恢复

iOS 的 MySQL 包装器

java - 在集成测试 RestController 时禁用或模拟 Spring Security 过滤器

java - 从 IDE 运行 Spring Web 与从 jar 文件运行 Spring Web

mysql - 如何获取MySQL中特定的列组合