Spring 多租户
Spring multi tenancy
我有两个数据库:Oracle
和 PostgreSQL
,其中我有多个模式 - 每个客户一个。我需要有机会通过 Web 请求路由数据源。我尝试使用 Spring 的 AbstractRoutingDatasource
,但它仅适用于单一方言。此任务还有其他解决方案吗?
我找到了解决办法。您可以使用 hibernate.dialect
属性 明确告诉 Hibernate 选择哪种方言。因此,您可以实现自己的方言扩展 org.hibernate.dialect.Dialect
class,覆盖所有 public 方法并将调用委托给特定方言。好事是 Hibernate 在执行任何数据库请求之前调用此 (Dialect
's) 方法。在我的具体情况下,我已经实现了一个自定义方言,其中包含我的项目所需的方言图,现在我可以使用相同的存储库并根据登录用户自由选择 Postgresql、Oracle 或 MySQL
我有两个数据库:Oracle
和 PostgreSQL
,其中我有多个模式 - 每个客户一个。我需要有机会通过 Web 请求路由数据源。我尝试使用 Spring 的 AbstractRoutingDatasource
,但它仅适用于单一方言。此任务还有其他解决方案吗?
我找到了解决办法。您可以使用 hibernate.dialect
属性 明确告诉 Hibernate 选择哪种方言。因此,您可以实现自己的方言扩展 org.hibernate.dialect.Dialect
class,覆盖所有 public 方法并将调用委托给特定方言。好事是 Hibernate 在执行任何数据库请求之前调用此 (Dialect
's) 方法。在我的具体情况下,我已经实现了一个自定义方言,其中包含我的项目所需的方言图,现在我可以使用相同的存储库并根据登录用户自由选择 Postgresql、Oracle 或 MySQL