基于模式的多租户,在MS SQL Server上使用hibernate

时间:2018-04-27 10:13:43

标签: sql-server spring hibernate jpa multi-tenant

我实现了基于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创建租户。

1 个答案:

答案 0 :(得分:0)

IMHO是满足您的应用程序需求的最佳多租户策略,它应该是COLUMN DISCRIMINATOR策略...但是它仍在开发中,在最新的Hibernate 5.3.2版本中不可用。

  

仅供参考,由于租户可以通过UI创建,因此架构必须是动态的。

使用具有如此高的可移植性要求的方案策略很难实现,原因如下:

  • 架构概念在数据库供应商之间是非常不同的
  • 休眠多租户解决方案还很轻巧

我建议您降低可移植性要求,只选择数据库供应商,为您提供有效的多租户架构策略工具。