DB Schema aus JPA Entitäten mit Hilfe von Eclipse WTP und den Hibernate Tools generieren lassen

Arbeitet man mit JPA (Java Persistence API) und konfiguriert die Entity Beans mit Hilfe von javax.persistence Annotationen stellt sich immer die Frage wie man von den modellierten Entity Beans an das Datenbankschema für die entsprechende Zieldatenbeank gelangt.

Entity Bean mit JPA Annotationen Dazugehöriges SQL Schema für diese Entity Bean
Entity Bean mit JPA Annotationen Entity Schema

Meistens bringen die verschiedenen JPA Implementierungen eigene Tools mit. Verwendet man z.B. Hibernate kann man zum Beispiel die von Konsole Tools in Form eines ANT Tasks verwenden. Arbeitet man mit der Eclipse Ganymede IDE hat man mit dem Web Tools Subprojekt “Dali” (Dali JPA Tools) die Möglichkeit sich das DB Schema mit Hilfe eines Eclipse Dialogs generieren zu lassen. Ich habe schon mal bei der Vorstellung der JBoss Tools 3 Alpha Version darauf hingewiesen, dass das WTP Dali Projekt ab Version 3 unterstützt wird.

Kurze Anleitung

Nachdem ich diesen Artikel in der ausführlichen Version erstellt hatte kam mir dieser mehr doch sehr lang vor obwohl das Konfigurieren an sich relativ schnell geht. Dahier hier die wenigen Schritte in absoluter Kurzform:

Ausführliche Anleitung

Im Folgenden wird anhand meines kleinen Java Schnipsel Projektes gezeigt wie das Datenbankschema, genauer gesagt die DDL (Data Definition Language) Datei, mit Eclipse generiert werden kann. Dieses Projekt verwendet Hibernate und somit werden aus den JBoss Tools Plugins das Hibernate Tools Eclipse Plugin benötigt. Nun sind die JBoss Tools 3.0.0 endlich offiziell Stable erschienen und da ist es an der Zeit dieses Feature mal auszuprobieren.

Im ersten Schritt sollte überprüft werden ob die Hibernate Tools installiert sind. Aus den JBoss Tools Eclipse Plugins wird für das Generieren der DDL Datei die Hibernate Tools benötigt. Für eine Installationsanleitung der JBoss Tools siehe hier.

JBoss Tools Eclipse Plugins - Hibernate Tools

Mein Beispielprojekt ist in der für Eclipse normalen JEE Projektstruktur erstellt worden (mit dem Seam Web Project Wizzard):

Eclipse JEE Projektstruktur

Hat man eine solche Projektstruktur muss man nun das JPA Project Facet hinzufügen. Dazu auf dem EJB Projekt aus dem Context Menü (recht Maustaste) “Properties” aufrufen. Im Properties Dialog “Project Facets” selektieren und dort das Facet “Java Persistence” auswählen:

Project Facet "Java Persistence"

Wenn das Facet “Java Persistence” selektiert wurde erscheint unten im gelben Hintergrund der Hinweis, dass weitere Konfigurationsmöglichkeiten bestehen (“Further configuration available”). Am einfachsten ist es diese Konfiguration direkt auszuwählen. Hat man die Einstellung mit “Apply” bestätigt einfach das Facet noch einmal deslektieren, Apply drücken und das Facet wieder selektieren.
In dem Dialog “Modify Facet Project -> JPA Facet” muss nun die verwendete JPA Platform und die DB Verbindung konfiguriert werden. Ich verwende Hibernate und habe meine MySQL Verbindung konfiguriert. Man kann direkt von diesem Dialog aus eine neue DB Verbindung konfigurieren, sofern man das noch nicht getan hat.

JPA Facet Konfiguration

Die zwei weiteren dort möglichen Einstellungen habe ich bei mir auf “Use implementation provided by server Runtime” (Die Server Runtime kann in den Properties unter dem Punkt “Targeted Runtimes” konfiguriert werden – verwendet man keinen Server wie den JBoss kann man die JPA Jars auch direkt angeben) und “Discover annotated classes automatically” gesetzt. Anschließend den JPA Facet Dialog und anschließend den Properties Dialog mit “Ok” beenden.

Hat man allerdings den Properties Dialog schon vor den zusätzlichen JPA Einstellungen mit “Ok” beendet muss man noch einmal die Properties für das EJB Projekt aufrufen und kann dann aber den Menüpunkt “JPA” direkt selektieren und somit konfigurieren:

JPA Facet Konfiguration im Properties Menü

Nachdem die Java Persistence Project Facets dem JEE Projekt hinzugefügt wurden ist im Context Menü, sofern man dieses auf dem EJB Projekt aufruft, der Eintrag “JPA Tools” zu finden. Darin findet sich der Menüpunkt “Generate DDL”.

Context Menü JPA Tools -> Generate DDL

Erhält man nach dem Auswählen dieses Menüpunktes den Fehler “DDL Generation is not supported by the Generic Platform” hat man vergessen seinen JPA Platform (Hibernate, Toplink, ..) zu konfigurieren. Dazu einfach wieder in die EJB Projekt Properties und den Menüpunkt “JPA” selektieren und konfigurieren. Mehr Informantionen zu dieser Fehlermeldung auch hier.
Ist alles soweit korrekt konfiguriert öffnet sich der DDL Generation Dialog. Darin gibt man zuerst das Zielverzeichnis sowie den Namen der DDL Datei an. Die zweite wichtige Konfiguration ist der Hibernate Dialekt der verwendet werden soll. Dazu kann man entweder eine bereits durch die Hibernate Perspektive erstellte Hibernate Console Konfiguration verwenden und diese mit der Checkbox “Use Console Konfiguration” verwenden oder wie in meinem Fall die bereits konfigurierte Datenbankverbindung. Der Dialekt kann dabei automatisch erkannt werden (ich berichtete darüber) oder direkt angeben:

DDL Generation Dialog

Ist alles korrekt konfiguriert wird durch den Button “Finish” das Generieren der DDL in der gewünschten Zieldatei gestartet. Das kann einen kleinen Moment dauern und anschließend ist diese Schemadatei auch unter der gewünschten Position (bei mir im EJB-Projekt im Ordner ejbModule) zu finden:

DDL Datei: schema.ddl

Gerade für die erste Entwicklungszeit und dem Erstellen der Entitäten ist diese einfach DDL Generierung sehr nützlich. Sieht man doch direkt was für Datenbanktypen aus den Java Attributen erstellt werden.

Alternativ kann man mit den Hibernate Tools über die Hibernate Perspektive das Schema auch direkt in der DB erstellen. Vor gut einem Jahr habe ich dazu einen kleinen Artikel erstellt.

Tags: , , , , , ,

Wenn du Fragen oder Anregungen zum Post hast, dann hinterlasse doch einen Kommentar oder wenn du weiterhin Artikel von Javathreads lesen möchtest, dann abonniere den RSS Feed und sehe direkt in deinem Feed Reader die nächsten Artikel.

Ähnliche Artikel, die dich interessieren könnten:
Kommentare

Bisher keine Kommentare vorhanden.

Hinterlasse einen Kommentar