我实现了基于Java 8,Spring Boot 2和JPA / Hibernate 5的支持多租户的应用程序
有不同的方法,我选择了基于模式的方法。 Hibernate docs也写了关于此的支持。
我还看了一些tutorials
但似乎网络上的每个人都使用本机SQL来切换架构。我不仅需要支持多个DBMS - 但我可以提供不同的实现 - 但似乎 MS SQL Server不支持在连接期间设置架构。
JDBC Connection对象上有一个setSchema(String)
方法,但是MS does not support it(也通过在Github上查看它们的源来验证)。不仅如此,我也找不到使用T-SQL的方法。
是否有另一种方法可以在我的ConnectionProvider中设置连接模式,还是必须切换到完全不同的方法(例如,基于鉴别器列)?
仅供参考,模式必须是动态的,因为可以通过UI创建租户。
答案 0 :(得分:0)
IMHO是满足您的应用程序需求的最佳多租户策略,它应该是COLUMN DISCRIMINATOR策略...但是它仍在开发中,在最新的Hibernate 5.3.2版本中不可用。
仅供参考,由于租户可以通过UI创建,因此架构必须是动态的。
使用具有如此高的可移植性要求的方案策略很难实现,原因如下:
我建议您降低可移植性要求,只选择数据库供应商,为您提供有效的多租户架构策略工具。