Spring Boot + IntelliJ + Embedded Database = Kopfschmerzen
Entweder ich bin fehlen einige Kern-Konzept begraben tief in eine Dokumentation (Spring, Spring Boot, H2, HSQLDB, Derby, IntelliJ) oder ich habe gestarrt, auf diese für zu lang.
Ich habe eine Spring-Boot-Projekt gehen. Versucht, mit und initialisieren einer H2-DB auf den ersten, versucht, die Verbindung zu es in IntelliJ nur zu erkennen, dass ich möglicherweise nicht in der Lage, leicht durchsuchen der db, ohne auf meine Erstgeborene Kind (Die Verbindung zu H2-Datenbank mit IntelliJ Datenbank-client).
Also zog ich nach DerbyDB. Gleiche Sache - db-root-Ordner erstellt wird in meiner app, Verbinde ich es in IntelliJ aber meine Tabellen, die waren einfach erstellt starten der app nicht verfügbar sind, durchsuchen.
Ich sogar versucht, SQLite, aber die Unterstützung für SQLite ist nicht so gut, und bestimmte update-Funktionen waren nicht verfügbar, aber ich konnte wenigstens meine Tabellen in IntelliJ browser!
Ich möchte nur einen einfachen ein-Datei embedded-DB, die ich verwenden können, durchsuchen und spielen Sie mit leicht. Irgendwelche Vorschläge?!
Wenn ich die Anwendung ausführen, ich sehe, dass das schema exportiert wird:
2015-07-19 09:37:45.836 INFO 98608 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export
Hibernate: drop table user_roles if exists
Hibernate: drop table users if exists
Hibernate: create table user_roles (id bigint generated by default as identity, role_name varchar(255), version bigint, user_id bigint, primary key (id))
Hibernate: create table users (id bigint generated by default as identity, email varchar(255), password varchar(255), username varchar(255), version bigint, primary key (id))
Hibernate: alter table user_roles add constraint FK_g1uebn6mqk9qiaw45vnacmyo2 foreign key (user_id) references users
2015-07-19 09:37:45.849 INFO 98608 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete
In IntelliJ, nichts (unter Verwendung einer remote-Quelle jdbc:h2:./test;AUTO_SERVER=TRUE als pro heenenee Vorschlag):
Sehe ich einige Stimmen zu schließen, weil Ihr unklar ist, was ich verlange:
Wie entwickle ich Anwendungen mit H2, HSQLDB oder Derby-Datenbanken, und verbinden Sie Sie mit IntelliJ?
- Mit
./test
als Pfad wird 2 dbs: eine in das spring-boot-Projekt arbeiten, Verzeichnis, und eine, in IntelliJ Arbeitsverzeichnis (oder so ungefähr). Verwenden~/test
in beiden Orten, so dass beide URLs zeigen auf das gleiche Verzeichnis auf dem Dateisystem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
H2 Automatische Gemischten Modus sollte in Ordnung sein für Sie. Verwenden
jdbc:h2:~/mydbInHomeDir;AUTO_SERVER=TRUE
als Ihrespring.datasource.url
. In IntelliJ, erstellen Sie eine remote H2 Datenquelle und verwenden genau die gleichen JDBC-URL. Sie können explizit drücken Sie die Schaltfläche "Synchronisieren" in der IntelliJ-Datenbank-Fenster, um die Datenbank-Tabellen zu zeigen.Hinzufügen, was heenenee oben erwähnt. Wenn Sie nicht angeben, AUTO_SERVER nur eine Verbindung gestattet werden, Ihre H2-Instanz.
Bin ich mit spring-boot mit spring-data-jpa. Stellen Sie sicher, dass @Entity deklariert für Ihre Entitäten für jede Tabelle(N).
Folgenden ist mein Antrag.yml /Anwendung.Eigenschaften
Starten Sie Ihre Anwendung und importieren Sie Daten in es. Spring boot wird automatisch importieren Sie Ihre Daten, wenn Sie importieren.sql in den classpath
ex: /src/main/resources/importieren.sql
Konfigurieren Sie IntelliJ wie so
Wenn Sie nicht mit IntelliJ laden Sie die server/client-combo - @
http://www.h2database.com/html/download.html entpacken Sie es und starten Sie den browser-basierten client verwenden:
Verbindung zu Ihrem eingebetteten Datenbank durch Angabe der Verbindungszeichenfolge:
Wenn Sie die Schritte in diesem Artikel: https://techdev.io/en/developer-blog/querying-the-embedded-h2-database-of-a-spring-boot-application
Ich denke, es wird die Hilfe eines Spring-Boot-Anwendung, die mit H2 in-memory-Datenbank ausgesetzt, die über ein tcp-server, so dass Sie können verwenden Sie die IntelliJ-Datenbank-client, um eine Verbindung herzustellen.
Hatte ich ähnliches problem. Es wurde aufgrund der Standard -
create-drop
ddl-Strategie der Ruhezustand.Mit dieser Strategie nach der Anwendung Herunterfahren, hibernate zerstört das schema am Ende der Sitzung, das ist, warum IntelliJ nicht alles zeigen. Ändern ddl-Strategie, um die
create
und hibernate erstellen das schema und zerstören frühere Daten für den nächsten Start der Anwendung.Hier ist ein Beispiel für meine Konfiguration:
Anwendung.yml
IntelliJ-Datenbank-Eigenschaften
Ergebnis