Ссылка объектов из библиотеки в другую библиотеку в JPA

Я использую Hibernate 4.3.6.Final с JPA и Spring 4.0.6.RELEASE в своем проекте с конфигурацией Java.

У меня есть два jar-файла. модуль1.jar и модуль2.jar. В module1.jar есть несколько сущностей, а в module2 — несколько сущностей. Я не могу использовать сущность module1.jar в module2.jar без использования persist.xml и

<jar-file>module1.jar</jar-file>

Нужно ли иметь файл persist.xml, поскольку я использую

entityManagerFactoryBean.setPackagesToScan("com.mydomain") для сканирования всех объектов из всех JAR-файлов.


person srivaradhan    schedule 16.08.2014    source источник
comment
Спасибо за ответ. Я нашел ошибку в своем коде. Я устанавливал packagesToScan после entityManagerFactoryBean.afterPropertiesSet(); метод   -  person srivaradhan    schedule 17.08.2014


Ответы (1)


Нет, нет необходимости использовать persistence.xml, если вы настраиваете entityManagerFactoryBean Spring с помощью setPackagesToScan().

Из Новые функции и улучшения в Spring 3.1:

3.1.12 Начальная загрузка JPA EntityManagerFactory без файла persistence.xml

В стандартном JPA единицы сохраняемости определяются через файлы META-INF/persistence.xml в определенных файлах jar, которые, в свою очередь, будут искать классы @Entity. Во многих случаях файл persistence.xml не содержит ничего, кроме имени модуля, и полагается на значения по умолчанию и/или внешние настройки для всех других вопросов (например, используемый источник данных и т. д.). По этой причине Spring 3.1 предоставляет альтернативу: LocalContainerEntityManagerFactoryBean принимает свойство packageToScan, указывающее базовые пакеты для сканирования классов @Entity. Это аналогично одноименному свойству AnnotationSessionFactoryBean для собственной установки Hibernate, а также функции сканирования компонентов Spring для обычных компонентов Spring. Эффективно это позволяет настроить JPA без XML за счет указания базового пакета для сканирования сущностей: особенно хорошо подходит для приложений Spring, которые также полагаются на сканирование компонентов для Spring bean-компонентов, возможно, даже загружается с помощью инициализатора Servlet 3.0 на основе кода.

person Ricardo Veguilla    schedule 16.08.2014