Actualización: Spring 3.1 admitirá persistence.xml
-sin configuración de JPA, consulte Spring 3.1 M2: Configuration Enhancements.
La respuesta de darioo es buena para el uso práctico, pero no es técnicamente correcta.
PersistenceProvider
tiene dos métodos de fábrica:
EntityManagerFactory createEntityManagerFactory(String emName, Map map)
- para entornos autónomos, persistence.xml
es que ser analizado por el proveedor de persistencia.
EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map)
- para entornos de servidores de aplicaciones, persistence.xml
fue analizado por el servidor de aplicaciones y su contenido se pasa como PersistenceUnitInfo
.
Spring LocalContainerEntityManagerFactoryBean
emula el entorno del servidor de aplicaciones. Por lo tanto, analiza persistence.xml
, fusiona su contenido con los valores del contexto de la aplicación y lo pasa al proveedor de persistencia utilizando el segundo método de fábrica.
Sin embargo, el proceso de obtención de datos persistence.xml
es configurable:
puede configurar el nombre de archivo usando persistence.xml
persistenceXmlLocation
propiedad - es útil para evitar conflictos con las estrategias de la APP de inicialización por defecto de servidores de aplicaciones.
Puede anular completamente la fuente de PersistenceUnitInfo
configurando una estrategia personalizada PersistenceUnitManager
.
Por lo tanto, en realidad se puede configurar la APP en la primavera sin persistence.xml
escribiendo una costumbre PersistenceUnitManager
, a través de un gestor de este tipo no está disponible fuera de la caja.
Una muy buena respuesta, te votaría si no hubiera agotado todos los votos de este día. Supuse que OP no se molestaría en desenterrar dentro de Spring, ya que parece innecesario y algo complejo. – darioo
Gracias por la respuesta +1 por toda la explicación – user373201