首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个租户具有部分共享表和多个模式的Hibernate多租户

每个租户具有部分共享表和多个模式的Hibernate多租户
EN

Stack Overflow用户
提问于 2022-09-19 18:44:20
回答 1查看 20关注 0票数 0

我有兴趣使用Hibernate多租户来解决以下问题:

我正在开发的JPA应用程序访问一个DB2 (AS400)数据库,但目前应用程序可以在两个环境中运行。在这些环境之间,有些表是共享的,但另一些表存在于不同的模式中,并且有两个这样的模式具有此属性。更清楚的是,它是这样的:应用程序具有A、B和C类,在环境ALPHA中,A对应于模式S1_1中的表T2,B对应于表T2和S1_2。在BETA中,表名是相同的,但是A有模式S2_1,B有模式S2_2。C对应于模式S1中的表T3。所有表和数据库都在同一个数据库上。无法选择修改现有表或架构的结构。

多租户是处理这种情况的可行方法吗?我看到一些文章说Hibernate多租户支持相同的数据库不同的模式,但我不知道这是否意味着“相同的数据库,但是每个租户有一个不同的模式”,或者“相同的数据库,每个租户都有任意多个模式”。而且,我不确定它是否能够支持两者之间的任何共享模式。

查看这篇文章,作者只是将模式设置为租户标识符,但在我的情况下,这是行不通的,因为一个标识符对应于多个模式(阿尔法到S1和S2),而一个模式可以对应多个标识符(S1到ALPHA和BETA)。这意味着在形成有效连接之前,需要知道租户标识符和正在访问的资源。即使这样,也假定连接不被重用(我不知道所提供的连接的生命周期),并且模式之间没有连接,因为模式似乎是按每个连接设置的。

虽然我提出了许多问题,但我有以下几个主要问题:

  1. 当租户标识符和模式之间存在许多到多个关联时,Hibernate多租户支持吗?
  2. 是否有一种方法可以知道从Hibernate多租户接口/超类中形成连接的请求?
  3. 如果在这种情况下多租户无法工作,那么在Hibernate/JPA中还有其他选择吗?
EN

回答 1

Stack Overflow用户

发布于 2022-09-27 10:40:16

可以通过指定@Table(name = "T3", schema = "S1")为实体C配置显式架构。这样,您可以对常规实体使用基于模式的多租户,但让该实体引用固定模式中的表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73777983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档