Im Feature jpa-2.0, das auf OpenJPA basiert, können Sie DDL (Data
Definition Langugage, Datendefinitionssprache) generieren oder direkt mit der Datenbank interagieren, um mit dem Tool "SchemaMapper"
Tabellenschemas auf der Basis der JPA-Entitätsdefinition zu definieren. Im Feature jpa-2.1, das auf
EclipseLink basiert, können Sie das neue Feature "Schema Generator" verwenden, das der
JPA 2.1-Spezifikation hinzugefügt wurde und ähnliche Funktionen wie das OpenJPA-Tool "SchemaMapperÄ" hat.
Informationen zu diesem Vorgang
Wenn Sie ähnliche Funktionen wie die im OpenJPA-Tool "SchemaMapper" bereitgestellten benötigen, können sie
das Feature "Schema Generator" aus der JPA 2.1-Spezifikation konfigurieren.
Vorgehensweise
- Geben Sie in der Persistenzeinheitendefinition in der Datei persistence.xml
die Datenbankaktionseigenschaft mit einem der gültigen Werte an: none,
create, drop oder drop-and-create. Jeder Wert entspricht der für die Datenbank ausgeführten Aktion. Das folgende Beispiel
bewirkt, dass die Tabellen, die den in der Persistenzeinheit angegebenen Entitäten entsprechen,
gelöscht und stattdessen neue Tabellen erstellt werden.
<persistence-unit name="pu">
<properties>
<property name="javax.persistence.schema-generation.database.action"
value="drop-and-create" />
...
</properties>
</persistence-unit>
- Geben Sie die Scriptaktionseigenschaft mit einem der gültigen Werte an: none,
create, drop oder drop-and-create. Wenn Sie einen anderen Wert als none angeben, müssen Sie auch eine Zieleigenschaft angeben. Wenn
Sie die Scriptaktion create angeben, die die Erstellungsanweisungen für die Entitätsdefinition
generiert, müssen Sie eine entsprechende Eigenschaft für die Zielerstellung (create target) mit einer Zieldatei angeben, in die die Anweisungen geschrieben werden.
<persistence-unit name="pu">
<properties>
<property name="javax.persistence.schema-generation.scripts.action"
value="drop-and-create" />
<property name="javax.persistence.schema-generation.scripts.create-target"
value="createTargetFile.ddl"/>
<property name="javax.persistence.schema-generation.scripts.drop-target"
value="sampleDrop.ddl"/>
...
</properties>
</persistence-unit>