2010-01-22 15 views
10

Wie überprüft man, ob die Konfiguration der Hibernate-Zuordnung mit der Datenbank übereinstimmt? Ich würde gerne wissen, ob ich eine falsche Version des Hibernate-Mappings verwende, bevor ich mit der Ausführung von Updates und Abfragen beginne, was dann fehlschlagen würde.So überprüfen Sie die Hibernate-Zuordnung für die Datenbank

Ich habe eine Reihe von Klassen, die mit Hibernate-Annotationen zugeordnet wurden. Ich habe auch Verbindung zur entsprechenden Datenbank. Jetzt möchte ich überprüfen, ob Hibernate-Mapping mit der Datenbank übereinstimmt.

Ich möchte zumindest folgende Dinge überprüfen:

  • alle abgebildeten Tabellen in Hibernate-Konfiguration haben entsprechende Objekt in der Datenbank (zB Tabelle oder Sicht)
  • alle zugeordneten Felder existieren in der Datenbank
  • Alle abgebildeten Felder richtigen Typen

ich würde es vorziehen, dass ich nur auf Datenbank-Metadaten basieren nicht Abfragen abgebildet Tabellen ausführen müssen, vorzugsweise wird die Prüfung.

Antwort

14

Von Hibernate configuration docs:

hibernate.hbm2ddl.auto

automatisch validiert oder Exporte Schema DDL in die Datenbank, wenn die Session erstellt wird. Mit create-drop wird das Datenbankschema gelöscht, wenn die SessionFactory explizit geschlossen wird.

z.B. validieren | aktualisieren | erstellen | create-Drop

So, können Sie es zu validate eingestellt und es wird überprüfen, ob alles in Ihren Hibernate-Mappings in der Datenbank vorhanden ist. Wenn Sie es auf update festlegen, wird jedes Mal, wenn Sie eine zugeordnete Klasse oder Eigenschaft hinzufügen, das zugrunde liegende Datenbankschema aktualisiert, um diese Änderung widerzuspiegeln.

Sie haben auch ein Kommandozeilen-Tool - SchemaUpdate

+0

Etwas, dass ich suche. Aber gibt es etwas in API, das ich programmatisch ausführen könnte? –

+1

Sie können es programmgesteuert ausführen. Schreiben Sie ein kleines Programm, das eine SessionFactory mit aktiviertem "validate" erstellt. – duffymo

+0

Ja, es gibt ein Befehlszeilenprogramm - ich habe es meiner Antwort hinzugefügt. Oder tun Sie lieber, was Duffymo vorgeschlagen hat. – Bozho

Verwandte Themen