我有两个数据库: Oracle
和 PostgreSQL
,每个数据库中都有多个模式 - 每个客户一个。我需要有一种机会通过Web请求路由数据源。我尝试使用Spring的AbstractRoutingDatasource
,但它只能处理单个方言。是否有其他解决这个任务的方法?
我有两个数据库: Oracle
和 PostgreSQL
,每个数据库中都有多个模式 - 每个客户一个。我需要有一种机会通过Web请求路由数据源。我尝试使用Spring的AbstractRoutingDatasource
,但它只能处理单个方言。是否有其他解决这个任务的方法?
我找到了一个解决方案。你可以使用hibernate.dialect
属性明确告诉Hibernate选择哪种方言。因此,你可以实现自己的方言,继承org.hibernate.dialect.Dialect
类,覆盖所有公共方法并将调用委托给特定的方言。好处是Hibernate在执行任何数据库请求之前会调用这些(Dialect
)方法。在我的特定情况下,我已经实现了一个自定义方言,其中包含我项目所需的方言映射,现在我可以使用相同的存储库,并根据登录用户自由选择Postgresql、Oracle或MySQL。