Я использую JPA и WildFly 10.
Представьте, что у двух разных компаний есть подписки на использование моего приложения. В идеале я хотел бы разделить данные двух компаний на отдельные базы данных или, по крайней мере, на таблицы с отдельными префиксами, используя JPA. Если пользователь входит на http://example.com/company1/, создается впечатление, что приложение полностью отделен от приложения, работающего по адресу http://example.com/company2/, хотя на самом деле «два» приложения являются частью одного приложения.
Несколько пользователей могут одновременно войти в систему из разных компаний, поэтому используемая база данных должна быть основана на сеансе.
Основная причина разделения данных на отдельные таблицы или базы данных — лучшая организация. Причиной использования одного приложения вместо нескольких является возможность горизонтального масштабирования.
Я видел ответы, в которых указано состояние для создания нескольких файлов persistence.xml
, однако мое приложение должно динамически создавать и удалять базы данных или таблицы на основе текущих активных подписок. Думайте об этом как о веб-хостинговой компании, где, как только вы заплатите, вы можете войти в систему и начать работу на своем веб-сайте; это то направление, в котором я двигаюсь. Поэтому я не могу жестко запрограммировать разные компании в программе.
Как это можно сделать с помощью JPA? Это вообще возможно? Или есть лучший способ выполнить то, что я ищу?
If some nasty bug wiped it out it'd be gone for everyone
: такое может случиться. Но у вас должна быть резервная копия ваших данных для таких случаев. 17.07.2016