Использование EntityManagerFactory из API постоянства - PullRequest
0 голосов
/ 21 июня 2019

Я хотел бы получить экземпляр EntityManagerFactory из интерфейса Persistence в среде jee ... но ссылка на спецификацию: https://docs.oracle.com/javaee/7/api/javax/persistence/Persistence.html

утверждает следующее

Класс Persistence также доступен в среде контейнера Java EE; однако поддержка API начальной загрузки Java SE в контейнерах не требуется.

Значит ли это, что мы не должны использовать Persistence.createEntityManagerFactory, чтобы не использовать его в среде Java Java?

Примечание: я протестировал в WAS 8.5.5 и JBOSS EAP 7 и смог успешно получить EntityManagerFactory и выполнить сохранение БД. Я хотел знать, если согласно спецификации контейнер может прекратить поддержку этого API?

1 Ответ

1 голос
/ 25 июня 2019

Если я правильно понимаю ваши комментарии, ваша проблема в том, что источник данных в некоторой степени динамичен, и поэтому вы хотите использовать загрузочный API для создания вашей EntityManagerFactory вместо того, чтобы настраивать ее «путем EE» через ваш файл persistence.xml

Насколько динамичен ваш источник данных?Какой контейнер EE вы используете?Возможно, вам удастся настроить источник данных в конфигурации вашего контейнера (т. Е. На сервере), и ваш фабрика управления данными либо будет создана контейнером, либо автоматически получит источник данных через JNDI.

У бывшего работодателя мы использовали Wildflyи мы сконфигурировали источник данных в конфигурации wildfly на каждом сервере, позволяя wildfly предоставлять источник данных в стандартном месте, чтобы hibernate мог подобрать и построить EMF.

См. https://stackoverflow.com/a/41550908/691074 для примера подобной установки.

Это позволило нам запускать один и тот же код на разных серверах, подключающихся к разным базам данных (т. Е. Тестировать, работать и т. Д.)

Стандартная конфигурация wildfly уже конфигурирует базу данных H2 в памяти,Вы можете изменить это, чтобы указывать в правильном направлении.

Здесь - документы Wildfly 10 относительно конфигурации источника данных, а здесь - объяснение файла persistence.xml с примерамидля ссылки на источник данных, управляемый контейнером.

Будет ли это работать для вашего случая?

...