С В спящем режиме, можно загрузить Ваш Entity
классы как:
sessionFactory = new AnnotationConfiguration()
.addPackage("test.animals")
.addAnnotatedClass(Flight.class)
.addAnnotatedClass(Sky.class)
.addAnnotatedClass(Person.class)
.addAnnotatedClass(Dog.class);
Существует ли способ сделать то же самое - программно загрузку Ваших классов Объекта - в JPA 2.0 совместимый путь?
Причина этого вопроса состоит в том, потому что я хотел бы динамично загрузить мой Entity
классы, таким образом не обязательно программно.
Я не думаю, что есть такая опция - JPA поддерживает сканирование пути к классам на наличие сущностей или явное перечисление классов сущностей в сохраняемости.xml. Поскольку вы используете hibernate в качестве поставщика сохраняемости, вы всегда можете прибегнуть к коду гибернации. Взгляните на классы HibernateEntityManager
и HibernateEntityManagerFactory
. Вы можете привести к ним фабрики менеджеров сущностей и менеджеров сущностей и сделать обычные вещи в спячке.
Есть ли способ сделать то же самое - программно загрузить ваши классы Entity - совместимым с JPA 2.0 способом?
Нет, это не поддерживается JPA, поэтому вам придется делать это в зависимости от поставщика.Джеймс Сазерленд описал процесс для EclipseLink в этой ветке следующим образом:
Вы можете получить доступ к EclipseLink
ServerSession
изEntityManagerFactoryImpl
(getServerSession ()
) и используйте его 'addDescriptor (ClassDescriptor)
илиaddDescriptors ()
API, чтобы добавить EclipseLinkClassDescriptor
. Вам нужно будет построить объекты метаданныхClassDescriptor
непосредственно самостоятельно (или использовать Mapping Workbench для их создания), поскольку загрузка из аннотаций JPA или orm.xml будет более сложной.
Также посмотрите этот более свежий поток , чтобы увидеть больше примеров кода (API выглядит немного подробным).