У меня есть приложение Spring + Hibernate + JPA.Пользователь при входе в систему может выбрать из списка БД для подключения (это требования).Все базы данных имеют одинаковую схему, поэтому будут использоваться одни и те же сущности и DAO.
Сейчас у меня есть один EntityManager (на данный момент работающий с одной базой данных), который внедряется в DAO следующим образом:
@PersistenceContext
private EntityManager entityManager;
Есть ли способ, чтобы DAO автоматически получал entityManager (управляемый Spring) на основе параметра / свойства, полученного от уровня обслуживания?(Веб-слой отправляет своего рода контекст, и там будет находиться имя / код / идентификатор выбранной базы данных.)
Или я должен управлять этим сам (создавая все EntityManager, помещая их вкарта, сообщающая DAO, какой из них использовать для каждого вызова)?
Я провел некоторое исследование, прежде чем задавать этот вопрос, но результаты были неубедительными - большинство вопросов касалось модели, распределенной на 2 или болееБД и транзакции, охватывающие несколько БД, но это не так для меня.
В моем случае, когда пользователь подключен, все равно, что он подключился к приложению, в котором есть только один диспетчер сущностей - тот, что для выбранной им базы данных.Там нет переключения между середине сеанса DB или любой другой такой вещи.
Спасибо.