Несколько EntityManager с одним и тем же Repository.Entity в весенней загрузке?

У меня есть приложение, в котором я хочу определить два источника данных, один для чтения и один для записи:

# Master Database
spring.datasource.url= jdbc:mysql://mysite.com/mydb
spring.datasource.username=user
spring.datasource.password=pass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# Replica Database
spring.read.datasource.url= jdbc:mysql://mysite1.com/mydb
spring.read.datasource.username=user
spring.read.datasource.password=pass
spring.read.datasource.driver-class-name=com.mysql.jdbc.Driver

Я определил два источника данных / менеджеров сущностей / менеджеров транзакций

но с данными Spring для одного репозитория будет выбран только один (?) Я знаю, что могу разделить объекты и репозитории и настроить разные ems для работы с разными пакетами (репозиториями / объектами).

Могу ли я использовать разные ems для одного и того же репо? Скажем, выполняя @Transactional (value = "readTransactionManager") для одного метода и @Transactional - для второго?

Итог: могу ли я настроить Spring для использования нескольких источников данных для одних и тех же объектов?

Любая помощь приветствуется. Я могу задать глупый вопрос.


person Sachin Sharma    schedule 27.07.2017    source источник
comment
Это может помочь. stackoverflow.com/questions/1961371/   -  person Ataur Rahman Munna    schedule 27.07.2017
comment
не помогло. даже если я поставлю имя менеджера транзакций в @Transactional, он выберет другой   -  person Sachin Sharma    schedule 27.07.2017


Ответы (1)


Can I use different ems for same repo ? - нет, нельзя. Вы можете использовать для этого кластер db, и в этом случае вы можете подключиться к одному кластеру, один сервер db отвечает за чтение (обычно подчиненный), а другой - за запись (обычно главный). Вы не должны знать, к какому серверу вы хотите подключиться в кластерном режиме. Хотя это кажется немного медленным для интенсивного использования. Или вы можете использовать несколько EMS для разных источников данных, как вы сказали - I know I can segregate the entities and repos and configure different ems to work with different packages (repos/entities).

См. Комментарий, как сказал @skaffman в ссылке, Spring с несколькими источниками данных @Transactional

person Ataur Rahman Munna    schedule 27.07.2017