JPA benutzerdefinierter Pfad zur Datenbank

JMarkus

Mitglied
Hallo,
ich habe eine Anwendung die mittels JPA (EclipseLink) auf eine embedded JavaDB zugreifen soll. Nun möchte ich, dass die Datenbank im Programmverzeichnis bzw. an einer vom Benutzer auszuwählenden Stelle (FileDialog) angelegt wird. Wie stellt man das am besten an? Der Pfad zur Datenbank wird bisher in der persistence.xml fest verdrahtet.

Vielen Dank für einen Denkanstoß!
 

peteral

Mitglied
Wenn ich mich richtig erinnere, dann kann man beim erstellen des EntityManagers eine Property Map mitgeben und mit ihr alle Parameter aus persistence.xml überschreiben.
 

JMarkus

Mitglied
Du hast Recht, vielen Dank für den Tipp.
Kannst du mir auch sagen, wie ich die embedded JavaDB bei Programmende sauber "herunterfahren" kann?
Das Hochfahren und verbinden erledigt ja JPA für mich. Mit dem close() des EntityManager und der EntityManagerFactory wird die DB nicht heruntergefahren (zu sehen an der verbleibenden db.lck). Ich kann die DB zwar per reinem JDBC herunterfahren
Java:
DriverManager.getConnection("jdbc:derby:;shutdown=true");
aber muss dafür nicht auch die JPA etwas bieten?
 

JMarkus

Mitglied
kleine Ergänzung, falls es mal jemand liest...
Die PropertyMap muss beim Erstellen der EntityManagerFactory übergeben werden, nicht beim Erstellen des EntityManagers.
Eine weitere smarte Variante wäre es, einfach vorher das Derby-Home-Verzeichnis zu setzen.
Java:
System.setProperty("derby.system.home", "/path/to/your/db");
 

Ähnliche Java Themen


Oben