Spring多租户

3

我有两个数据库: OraclePostgreSQL,每个数据库中都有多个模式 - 每个客户一个。我需要有一种机会通过Web请求路由数据源。我尝试使用Spring的AbstractRoutingDatasource,但它只能处理单个方言。是否有其他解决这个任务的方法?


为什么需要将它放在单个应用程序中?难道不能为每个数据库配置多个应用程序,然后只选择所需的一个?创建存储库并在所有应用程序中重复使用它。 - nllsdfx
通过网络请求路由数据源,这些网络请求是否有不同的URL?我的意思是,服务实现类是否针对不同的客户而不同,或者您希望使用不同的数据源初始化单个服务类? - Sabir Khan
1个回答

2

我找到了一个解决方案。你可以使用hibernate.dialect属性明确告诉Hibernate选择哪种方言。因此,你可以实现自己的方言,继承org.hibernate.dialect.Dialect类,覆盖所有公共方法并将调用委托给特定的方言。好处是Hibernate在执行任何数据库请求之前会调用这些(Dialect)方法。在我的特定情况下,我已经实现了一个自定义方言,其中包含我项目所需的方言映射,现在我可以使用相同的存储库,并根据登录用户自由选择Postgresql、Oracle或MySQL。


1
非常棒的解决方案和解释,非常感谢! - lenach87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接