具有多个数据源和多种方言的Spring Data jdbc

yjghlzjz  于 2022-12-02  发布在  Spring
关注(0)|答案(1)|浏览(153)

我有一个spring Boot 应用程序,它使用spring data jdbc并连接到两个数据库,其中一个是postgres,一个是oracle,我通过jdbc存储库(org.springframework.data.repository.Repository)访问它们。
一般来说,这样做效果很好,但是所有的存储库都使用相同的方言。我怎样才能根据查询所用的jdbc存储库使用不同的jdbc方言呢?

ozxc1zmp

ozxc1zmp1#

也许这对将来的其他人有帮助:
您可以实现自己的JdbcRepositoryFactoryBean版本,并在其中硬编码Dialect。然后,定制类可以与@EnableJdbcRepositories注解一起使用。
Oracle数据库的配置示例:

@EnableJdbcRepositories(basePackageClasses = my.oracle.DbRepository.class,
  jdbcOperationsRef = "secondaryNamedParameterJdbcTemplate",
  transactionManagerRef = "secondaryTransactionManager",
  repositoryFactoryBeanClass = OracleRepositoryFactoryBean.class)

自定义工厂Bean的示例:

public class OracleRepositoryFactoryBean<T extends Repository<S, ID>, S, ID extends Serializable>
extends JdbcRepositoryFactoryBean<T, S, ID> {
   // override constructor and set dialect
   // override setDialect to be safe
}

如果有更优雅的解决方案,请添加它。

相关问题