我有兴趣使用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)。这意味着在形成有效连接之前,需要知道租户标识符和正在访问的资源。即使这样,也假定连接不被重用(我不知道所提供的连接的生命周期),并且模式之间没有连接,因为模式似乎是按每个连接设置的。
虽然我提出了许多问题,但我有以下几个主要问题:
发布于 2022-09-27 10:40:16
可以通过指定@Table(name = "T3", schema = "S1")为实体C配置显式架构。这样,您可以对常规实体使用基于模式的多租户,但让该实体引用固定模式中的表。
https://stackoverflow.com/questions/73777983
复制相似问题