Ответ 1
Обновление: Spring 3.1 поддерживает persistence.xml
-бесплатную конфигурацию JPA, см. Spring 3.1 M2: Улучшения конфигурации.
darioo ответ полезен для практического использования, но не является технически корректным.
PersistenceProvider
имеет два метода factory:
-
EntityManagerFactory createEntityManagerFactory(String emName, Map map)
- для автономных средpersistence.xml
должен быть проанализирован поставщиком непрерывности. -
EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map)
- для сред сервера приложенийpersistence.xml
был проанализирован сервером приложений, и его содержимое передается какPersistenceUnitInfo
.
Spring LocalContainerEntityManagerFactoryBean
эмулирует среду сервера приложений. Поэтому он сам анализирует persistence.xml
, объединяет его содержимое со значениями из контекста приложения и передает его провайдеру сохранения, используя второй метод factory.
Однако процесс получения данных persistence.xml
настраивается:
-
Вы можете настроить имя файла
persistence.xml
с помощью свойстваpersistenceXmlLocation
- полезно избегать конфликтов со стратегиями инициализации по умолчанию JPA серверов приложений. -
Вы можете полностью переопределить источник
PersistenceUnitInfo
, установив пользовательскую стратегиюPersistenceUnitManager
.
Итак, на самом деле вы можете настроить JPA в Spring без persistence.xml
, написав пользовательский PersistenceUnitManager
, хотя такой менеджер недоступен из коробки.