Frage

Was ist der beste Weg, Tabellen mit JPA beim Start der Anwendung / Abschaltung der Anwendung erstellen zu füllen? wie aber mit Datenbearbeitungssprache statt Datendefinitionssprache. Ich verwende HibernatePersistence als Persistenz-Provider.

War es hilfreich?

Lösung 2

mit import.sql in Standardpaket gelöst und „create“ als hibernate.hbm2ddl.auto Wert auswählen. Hibernate unterstützt auch hibernate.hbm2ddl.import_files Eigenschaft.

Andere Tipps

Wenn Sie auch Feder verwendet, dann diese Antwort funktionieren wird.

Wenn Sie nicht Frühling verwenden, dann müssen Sie den DDL-Code manuell ausführen. Beachten Sie, dass Hibernate nur begrenzte Unterstützung hat die Datenbank zu ändern (es kann im Grunde nur Tabellen erstellen). Also, wenn Sie etwas anderes benötigen, müssen Sie benutzerdefinierte SQL verwenden.

[EDIT] Wenn Sie nicht Frühling verwenden zu können, dann einen Weg finden, in der Hibernate Session zu bekommen. Rufen Sie die doWork() Methode, die beliebige SQL ausgeführt werden kann.

Ein anderer Ansatz ist es, die Domänenobjekte und beharren, sie zu schaffen. Ich ziehe den ersten Ansatz, obwohl, da Sie die IDs der generierten Objekte auf diese Weise fixieren können und andere Dinge tun, die komplexen mit der JPA-Schnittstelle sind.

Es Sie nicht wollen, eine Menge insert Erklärungen schreiben, dann die Daten in die DB einfügen und mit einem SQL-Tool wie SquirrelSQL exportieren, die die insert Aussagen für Sie erstellen können. Setzen Sie sie in eine zusätzliche Datei, lesen Sie die Datei beim Start, spaltet es in ; und jedes Stück auszuführen.

Ich denke, Ihre Tabellen mit niedrigem Niveau SQL Insert-Anweisungen Füllung ist nicht die beste Option, da Sie manuell Pflege des Fremdschlüssels nehmen und auch diese Aussagen mit Ihrem Code Refactoring.

Da Sie bereits ein Objektmodell und ORM haben, eine andere, tragbare Lösung ist Ihre init Daten mit Ihren Objekten zu definieren und die PPV-Anbieter lassen sie bestehen bleiben. Obwohl diese Lösung könnte umständlich erscheinen, aber rel="nofollow"> dieser Projekte wie

Zu Testzwecken habe ich mit einem einfachen groovy Skript genommen und die gmaven-Plugin von org.codehaus.groovy.maven. Die gmaven-Plugin führt das groovy Skript und das Skript erstellt import.sql während des Erzeugung Test-Ressourcen Maven Lebenszyklus. Mit Schleifen und Zählern in einem Skript ist viel besser als die manuelle Eingabe aus einer Datei mit Insert-Anweisungen gefüllt. Dies erfordert natürlich, dass Sie hbm2ddl Sachen sortiert haben, wie sieht es aus wie Sie bereits aus dem vorherigen Updates herausgefunden und Antworten.

scroll top