Признаюсь, я не совсем понимаю, что вы подразумеваете под плетением.Мой ответ может помочь, если вам нужно динамически создавать PersistenceUnits, которые предоставляют JPA-Entitymanagers, и если эти модули должны иметь возможность создавать Db-схему (например, в H2) и управлять объектами динамически на основе классов, которые вы предоставляете во время выполнения.
Пример кода, о котором я упомяну позже, не работает с JPA в Spring, но в Weld.Я думаю, что ответ на ваш вопрос связан с тем, как создаются EntityManager и какими классами управляет PersistenceUnit, который создает EntityManager.Там нет никакой разницы между этими двумя.Вместо использования EntityManagerFactory в качестве CDI-Producer вы можете автоматически подключить его или зарегистрировать, используя устаревший контекст приложения.Поэтому я думаю, что ответ на ваш вопрос заключается в следующих официальных источниках :
PersistenceProviderResolverHolder и PersistenceProvider # createEntityManagerFactory (getPersistenceUnitName (), properties) properties является заменой для файла persistence.xml, в котором можно зарегистрировать объект SEPersistenceUnitInfo.
Для начала рассмотрим: PersistenceProviderResolverHolder Позже: PersistenceProvider
или вы можете попытаться понять, как мой код (см. Ниже) делает это.Но я должен признать, что я не очень горжусь этой частью этого программного обеспечения, извините.
Эти классы и объекты используются мной для создания модуля, который позволяет моделировать развернутый сервер JPA-WAR-Файл.Для этого он сканирует некоторые классы и идентифицирует сущности.Позже в Testcode так называемая PersistenceFactory создает EntityManager и Datasources.Если используется eclipselink, эта фабрика объединяет эти классы вместе.Вам не нужен файл persistence.xml.Работа там может помочь ответить на ваш вопрос.
Если вы посмотрите на: ioc-unit-ejb: TestPersistencefactory поиск для создания SEPersistenceUnitInfo.Этот интерфейс получает список классов, которые он возвращает как
@Override
public List<String> getManagedClassNames() {
return TestPersistenceFactory.this.getManagedClassNames();
}
Этот объект используется для создания фабрики постоянства с помощью PersistenceProvider.Это можно обнаружить, как только eclipselink станет доступен в classpath.
Код не так прост для понимания, так как он позволяет использовать как Hibernate, так и Eclipselink для JPA, что зависит от доступности jar-файлов впуть к классам.