Dienstag, 17. Dezember 2013

Schema-Export mit JPA 2.1

Eine der Neuerungen in Java Persistence 2.1 ist die standardisierte Möglichkeit, aus den Mapping-Informationen des Datenmodells das Datenbank-Schema generieren zu können. Seit gestern Abend steht mit Hibernate 4.3 eine weitere Implementierung des aktuellen JPA-Standards zur Verfügung, mit der folgender Code zur Schema-Generierung ausgeführt werden kann:

import javax.persistence.Persistence;

...

try (FileWriter out
      = new FileWriter("schema-komplett.sql")) {

   Map<String, Object> props = new HashMap<>();

   props.put(
      "javax.persistence.schema-generation.scripts.action",
      "create");

   props.put(
      "javax.persistence.schema-generation.scripts.create-target",
      out);

   Persistence.generateSchema(
      "name-der-persistence-unit", props);
}

Leider scheint im Standard keine Möglichkeit vorgesehen zu sein, eine Differenz zum aktuell in der Datenbank vorhandenen Schema zu ermitteln.