Как настроить Spring-Boot AbstractRoutingDatasource, чтобы транзакции и режим гибернации работали правильно с Spring-Data? - PullRequest
0 голосов
/ 08 октября 2019

Мне нужна ваша помощь в настройке AbstractRoutingDatasource для нескольких БД в Spring-Boot, чтобы транзакции и Hibernate работали правильно. Я читаю несколько блогов об этом:

  1. https://fable.sh/blog/splitting-read-and-write-operations-in-spring-boot/
  2. http://fedulov.website/2015/10/14/dynamic-datasource-routing-with-spring/
  3. https://kimrudolph.de/blog/spring-datasource-routing

и 1. выглядитмногообещающе, но не содержит

@SpringBootApplication(exclude = { 
    DataSourceAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class,
    HibernateJpaAutoConfiguration.class })

как в 3 (https://github.com/krudolph/spring-datasource-routing/blob/master/src/main/java/de/kimrudolph/routing/RoutingApplication.java

https://github.com/krudolph/spring-datasource-routing/blob/master/src/main/java/de/kimrudolph/routing/DataSourceConfiguration.java).

Так что мой вопрос в том, что является правильным путемнастроить AbstractRoutingDatasource? Могу ли я просто настроить источники данных, как в 1. (вот исходный код: https://github.com/DominicGunn/fable-spring-read-replica/blob/master/src/main/java/sh/fable/persistence/DataSourceConfig.java), и Spring-Boot автоматически настроит диспетчер транзакций и спящий режим правильно, или мне нужно настроить все вручную, какв 3.?

Желаемое поведение должно быть:

  • Я выбираю в своем коде DB1 и запускаю транзакцию, и эта транзакция должна работать изолированно (только на DB1)
  • позже я выбираю в своем коде DB2 и запускаю транзакцию, и эта транзакция должна работать изолированно (только для DB2)
  • не должно быть разделения объектов / кэшей в Hibernate / JPA между транзакциями на DB1 итранзакции на DB2
  • это шоуРаботаю с Spring-Data
...