Java Spring Hibernate JPA-使用许多模式

Java Spring Hibernate JPA-使用许多模式,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我所在的公司将每个客户机的客户机数据存储在单独的数据库模式中。它们表明,目前无法更改这一点。是否有一种有效的方法可以在不为每个模式配置连接的情况下提取所有模式中的数据并更新数据?搜索时我能找到的所有东西似乎都在谈论使用一个或几个模式,但我需要同时使用多个(100+)模式。在任何给定的持久性上下文中,每个JPA实体类都映射到特定的基表。通过一个DB连接访问多个模式是否容易以及如何容易取决于您的DBMS、JDBC驱动程序,可能还取决于您的特定数据库,但是,即使是通常支持所需访问类型的组合,也不允许将

我所在的公司将每个客户机的客户机数据存储在单独的数据库模式中。它们表明,目前无法更改这一点。是否有一种有效的方法可以在不为每个模式配置连接的情况下提取所有模式中的数据并更新数据?搜索时我能找到的所有东西似乎都在谈论使用一个或几个模式,但我需要同时使用多个(100+)模式。

在任何给定的持久性上下文中,每个JPA实体类都映射到特定的基表。通过一个DB连接访问多个模式是否容易以及如何容易取决于您的DBMS、JDBC驱动程序,可能还取决于您的特定数据库,但是,即使是通常支持所需访问类型的组合,也不允许将同一实体类映射到同一持久性上下文中的多个不同的基表


通过将不同的持久性上下文与每个客户机关联,您可能能够为不同的客户机使用相同的实体类,但这不允许您为所有客户机使用相同的DB连接。因此,如果您完全可以使用相同的连接,那么每个客户机将需要不同的实体类。

您是否考虑过创建一个新的DB用户并在单独的数据库架构中为每个表创建同义词

然后,您可以将JPA实体映射到您创建的同义词名称


使用这种方法,您仍然可以使用one DB连接,但在其他模式中使用DB表的同义词…

您面临的问题是“多租户”:从实体类到表的映射已经可以在持久性上下文配置中自定义,因此我不知道同义词(在支持它们的DBMS中)是如何定义的添加任何新内容。也许你可以澄清一下?嗨,John,没有什么要澄清的,我只是把它看作是“不为每个模式配置连接”的一个简便解决方案……只是想澄清一下,同义词是否仍然需要为每个模式提供单独的实体类?我不认为你需要单独的实体类。我认为您可以使用HibernateInterceptor和一些创造性的代码来动态引用同义词……感谢您的明确响应。在这种情况下,我的最佳选择似乎是为每个客户机模式提供单独的DB连接。您是否了解扩展到100个或更多客户端需要多少代价?我还想知道在较小的批量中生成和关闭连接是否会更好?@user123959,性能问题最好通过仔细的实验来回答。准确的性能预测是出了名的困难。