Если я правильно понимаю ваши комментарии, ваша проблема в том, что источник данных в некоторой степени динамичен, и поэтому вы хотите использовать загрузочный API для создания вашей EntityManagerFactory вместо того, чтобы настраивать ее «путем EE» через ваш файл persistence.xml
Насколько динамичен ваш источник данных?Какой контейнер EE вы используете?Возможно, вам удастся настроить источник данных в конфигурации вашего контейнера (т. Е. На сервере), и ваш фабрика управления данными либо будет создана контейнером, либо автоматически получит источник данных через JNDI.
У бывшего работодателя мы использовали Wildflyи мы сконфигурировали источник данных в конфигурации wildfly на каждом сервере, позволяя wildfly предоставлять источник данных в стандартном месте, чтобы hibernate мог подобрать и построить EMF.
См. https://stackoverflow.com/a/41550908/691074 для примера подобной установки.
Это позволило нам запускать один и тот же код на разных серверах, подключающихся к разным базам данных (т. Е. Тестировать, работать и т. Д.)
Стандартная конфигурация wildfly уже конфигурирует базу данных H2 в памяти,Вы можете изменить это, чтобы указывать в правильном направлении.
Здесь - документы Wildfly 10 относительно конфигурации источника данных, а здесь - объяснение файла persistence.xml с примерамидля ссылки на источник данных, управляемый контейнером.
Будет ли это работать для вашего случая?