2013-09-03 15 views
12

Persistenzeinheiten in der Datei persistence.xml werden beim Erstellen der Anwendung erstellt. Da ich die Datenbank-URL zur Laufzeit ändern möchte, gibt es eine Möglichkeit, die Persistenz-Einheit zur Laufzeit zu ändern? Ich sollte eine andere Datenbank verwenden, als eine vorher gebundene, nachdem ich sie verteilt habe.Dynamische Änderung der Persistenzeinheit - JPA

Ich bin mit Eclipse (JPA 2.1)

+0

Verwenden Sie einen Server? –

+0

Nop. Es ist eine eigenständige Anwendung. Datenbankserver sind Oracle-12c und SQL Server 9.0.x –

Antwort

25

Behalten Sie die Persistenzeinheitsdatei (Persistence.xml) wie sie ist. Sie können die Eigenschaften wie folgt überschreiben.

EntityManagerFactory managerFactory = null; 
Map<String, String> persistenceMap = new HashMap<String, String>(); 

persistenceMap.put("javax.persistence.jdbc.url", "<url>"); 
persistenceMap.put("javax.persistence.jdbc.user", "<username>"); 
persistenceMap.put("javax.persistence.jdbc.password", "<password>"); 
persistenceMap.put("javax.persistence.jdbc.driver", "<driver>"); 

managerFactory = Persistence.createEntityManagerFactory("<current persistence unit>", persistenceMap); 
manager = managerFactory.createEntityManager(); 
0

In Langlebig Session Architektur sollten Sie einen Plug-in-Framework-erstellen.

Daher müssen Sie eine andere Thread-Gruppe und Klassen-Repository erstellen.

Dies könnte Ihre Klasse-Loader-Baum

  • -System-Klasse-Loader (in der Regel ein URLClassLoader enthält die Entitys) sein
    • JPA-Class-Loader
      • Laden Sie Ihre JPA .jar mit persistence.xml innerhalb, spezifizieren Sie die Datenbank-Konfiguration von Application-Class-Loader
      • Instanzici Ihre EntityManager/Session-Fabrik.
      • Laden Sie alle Plugins, die Sie für die Arbeit mit der DataBase benötigen. Führen Sie Unit-Tests (; D) und Plugin-Integration-Tests durch.
2

können Sie Persistence.createEntityManagerFactory (Map) verwenden, um Eigenschaften zu übergeben Sie die Datenbank-URL und andere Einstellungen zu wählen.

+0

Klingt gut. Lass mich das versuchen. –

Verwandte Themen