Aggiornamento: Spring 3.1 supporterà la configurazione JPA persistence.xml
-free, vedere Spring 3.1 M2: Configuration Enhancements.
La risposta di darioo è buona per l'uso pratico, ma non tecnicamente corretta.
PersistenceProvider
ha due metodi di fabbrica:
EntityManagerFactory createEntityManagerFactory(String emName, Map map)
- per ambienti autonomi, persistence.xml
deve essere analizzato dal provider di persistenza.
EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map)
- per gli ambienti server applicativi, persistence.xml
è stato analizzato dal server di applicazione e il suo contenuto viene passato come PersistenceUnitInfo
.
Spring LocalContainerEntityManagerFactoryBean
emula l'ambiente del server delle applicazioni. Pertanto analizza lo stesso persistence.xml
, unisce i suoi contenuti con i valori del contesto dell'applicazione e lo passa al provider di persistenza utilizzando il secondo metodo di fabbrica.
Tuttavia, processo di ottenimento dei dati persistence.xml
è configurabile:
È possibile configurare il nome del file usando persistence.xml
persistenceXmlLocation
proprietà - è utile per evitare conflitti con le strategie di inizializzazione APP di default dei server applicativi.
È possibile ignorare completamente la sorgente di PersistenceUnitInfo
impostando una strategia personalizzata PersistenceUnitManager
.
Quindi, in realtà è possibile configurare JPA in primavera senza persistence.xml
scrivendo una consuetudine PersistenceUnitManager
, anche se un tale manager non è disponibile out of the box.
Una buona risposta, ti voterei se non avessi esaurito tutti i voti per questo giorno. Supponevo che OP non si sarebbe preoccupato di scavare all'interno di Spring, poiché sembra inutile e alquanto complesso. – darioo
Grazie per la risposta +1 per tutte le spiegazioni – user373201