сравнить два EntityManagerFactories для наличия PersistenceUnits с идентичными атрибутами соединения

#jpa #eclipselink

#jpa #eclipselink

Вопрос:

Имея два экземпляра JPA2 (EclipseLink) EntityManagerFactory , каков наилучший способ определить, что их атрибуты PersistenceUnit идентичны?

Ответ №1:

Вы можете вызвать GetProperties(), чтобы получить свойства единицы сохранения и сравнить их.

Обычно EclipseLink будет использовать одну и ту же серверную сессию EclipseLink, если одна и та же единица сохранения используется дважды. Вы можете вызвать unwrap(Session.class ), чтобы получить сеанс и посмотреть, совпадают ли они.

Комментарии:

1. getPropperties() возвращает только eclipselink .??? свойства из persistency.xml , но не свойства, определяющие соединение: источник данных, URL-адрес подключения, пользователь и т.д.

Ответ №2:

Я думаю, что вам лучше всего получить (каким-то образом, каким-то образом …) доступ к PersistenceUnitInfo интерфейсу, который реализован и создан контейнером и передан поставщику JPA. Поставщик JPA использует его при создании EntityManagerFactory .