Spring 多租户

Spring multi tenancy

我有两个数据库:OraclePostgreSQL,其中我有多个模式 - 每个客户一个。我需要有机会通过 Web 请求路由数据源。我尝试使用 Spring 的 AbstractRoutingDatasource,但它仅适用于单一方言。此任务还有其他解决方案吗?

我找到了解决办法。您可以使用 hibernate.dialect 属性 明确告诉 Hibernate 选择哪种方言。因此,您可以实现自己的方言扩展 org.hibernate.dialect.Dialect class,覆盖所有 public 方法并将调用委托给特定方言。好事是 Hibernate 在执行任何数据库请求之前调用此 (Dialect's) 方法。在我的具体情况下,我已经实现了一个自定义方言,其中包含我的项目所需的方言图,现在我可以使用相同的存储库并根据登录用户自由选择 Postgresql、Oracle 或 MySQL