Spring JPA Read Write Split - транзакционное использование источника данных для записи

У меня есть приложение, которое использует Hibernate / JPA, Spring и Jersey. В контексте моего приложения я устанавливаю источник данных, определяю фабрику диспетчера сущностей, устанавливаю диспетчер транзакций с этой фабрикой диспетчера сущностей и имею различные методы обслуживания, аннотированные с помощью аннотации транзакции, поэтому у меня также есть определение, управляемое аннотацией tx: для подключения в моем диспетчере транзакций, где это необходимо. Эта установка отлично работает, я отлично умею читать и писать. Я хотел бы перейти к настройке БД, где у меня есть мастер с несколькими подчиненными (MySQL). Поэтому я хочу, чтобы все методы, аннотированные транзакционным, использовали источник данных, указывающий на главный сервер db, а все остальные использовали пул соединений подчиненных.

Я пробовал создать два разных источника данных, с двумя разными фабриками менеджеров сущностей и двумя разными постоянными модулями - мягко говоря, уродливо. Я пробовал использовать прокси-сервер MySQL, но у нас с ним было больше проблем, чем нам нужно. Пул соединений уже обрабатывается в контейнере сервлета. Могу ли я реализовать в Tomcat что-то, что считывает транзакцию и направляет ее на нужный сервер базы данных, или есть способ получить все эти методы, аннотированные с помощью аннотации транзакции, для использования определенного источника данных?

5
задан Shrinivas Shukla 22 September 2017 в 04:52
поделиться