【发布时间】:2018-01-08 15:03:17
【问题描述】:
我工作的公司将他们的客户数据存储在每个客户的单独数据库架构中。他们表示目前无法更改。是否有一种有效的方法可以在所有模式中提取数据和更新数据,而无需为每个模式配置连接?我搜索时能找到的所有内容似乎都在谈论使用一个或几个模式,但我需要同时使用许多(100 多个)。
【问题讨论】:
我工作的公司将他们的客户数据存储在每个客户的单独数据库架构中。他们表示目前无法更改。是否有一种有效的方法可以在所有模式中提取数据和更新数据,而无需为每个模式配置连接?我搜索时能找到的所有内容似乎都在谈论使用一个或几个模式,但我需要同时使用许多(100 多个)。
【问题讨论】:
在任何给定的持久性上下文中,每个 JPA 实体类都映射到特定的基表。您是否以及如何轻松地通过单个 DB 连接访问多个模式取决于您的 DBMS、JDBC 驱动程序,也许还有您的特定数据库,但即使是通常支持您需要的访问类型的组合仍然不允许您可以将相同的实体类映射到同一持久性上下文中的多个不同的基表。
您可以通过将不同的持久性上下文与每个客户端相关联来为不同的客户端使用相同的实体类,但这将不允许您为所有客户端使用相同的数据库连接。因此,如果您完全可以使用相同的连接,则每个客户端都需要不同的实体类。
【讨论】:
您是否考虑过创建一个新的数据库用户并为单独的数据库架构中的每个表创建 SYNONYMS ?
然后您可以将 JPA 实体映射到您创建的同义词名称..
使用这种方法,您仍然可以使用一个数据库连接,但使用 SYNONYMS 到其他模式中的数据库表...
【讨论】: