【问题标题】:Spring boot data hibernate different datasourcesSpring Boot数据休眠不同的数据源
【发布时间】:2014-06-28 17:49:28
【问题描述】:

我正在玩 spring-bootspring-boot-data-jpa。我需要@Entity class A {...} 使用hsqlDatasource@Entity class B {...} 使用mssqlDatasource。我怎样才能做到这一点?

我想做这样的事情:

@Repository
@UseDatasource("hsql")
interface A extends CrudRepository....

【问题讨论】:

  • 在 Spring Boot 中没有这样的注解,因此您需要自己配置每个数据源并关闭数据源自动配置。在你这样做之后,我不知道让 Spring Data JPA 与多个数据源一起工作有多容易
  • 所以你的意思是Spring数据不支持这样的用例?我可以“全部自己”做到这一点,但我认为在应用程序中使用多个数据源并不罕见。如果 spring-data 支持,那就太好了。
  • 我不确定它是否支持它,但是当我在寻找类似的东西时,我没有找到它:)

标签: hibernate jpa-2.0 spring-data-jpa spring-boot spring-4


【解决方案1】:

Spring Data 通过@EnableJpaRepositories(entityManagerFactoryRef=...) 支持这种模式。要使其与 Spring Boot 一起使用,您可以创建 2 个DataSources,标记其中一个@Primary,它将被自动配置的entityManagerFactory bean 使用。然后您添加另一个并在您的 2 个 @EnableJpaRepositories 注释中分别引用它们。

我想你甚至可以为这两种存储库类型中的每一种创建一个自定义注释并在@EnableJpaRepositories(includeFilters=...) 中使用它,但如果我是你,我会首先使用包扫描(即只需将存储库放在2 个不同包中的数据源目标)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    相关资源
    最近更新 更多