Ich versuche eine In-Memory-Datenbank zu verwenden, um eine Teradatendatenbank nachzuahmen. Ich muss ein Schema erstellen, bevor die Tabellen erstellt werden, aber es gibt mir passt.
Ich benutze Spring und habe viel Datenbankinteraktion mit import.sql
, dies wird jedoch ausgeführt, nachdem Hibernate alle Tabellen erstellt hat. Ich habe versucht, die Datei .script
zu verwenden, die HSQLDB lesen soll, aber ich denke, wenn Sie eine In-Memory-Datenbank verwenden, die nicht funktioniert. Ich habe die Dateien ein wenig verschoben und nichts scheint zu treffen.
Wer hat herausgefunden, wie man beim Start ein Schema für eine speicherinterne HSQLDB-Datenbank erstellt?
Wenn Sie Ihr Skript auf diese Weise ausführen ...
%Vor%... dann wird es ausgeführt, bevor Hibernate seine Initialisierung durchführt.
Ich habe es erneut getestet, besonders für dich. Es wird ausgeführt, bevor Hibernate die Tabellen erstellt. Sehen Sie sich dieses Protokoll an ( das Skript läuft in den ersten drei Zeilen, Hibernate in den letzten ):
%Vor%Sie können eine Datei verwenden: Datenbank mit allen Daten im Speicher und ohne Änderungen, die von Ihrem Test geschrieben wurden. Dies sollte Ihrem Zweck dienen.
Erstellen Sie zuerst das Datenbankschema mit der URL jdbc:hsqldb:file:initdata
und führen Sie SHUTDOWN
aus. Dann füge hinzu
files_readonly=true
für die initdata.properties
-Datei oder alternativ die folgende URL:
Wenn Ihre Tests für diese Datenbank ausgeführt werden, wird nichts in Datenbankdateien geschrieben und alle Daten sind im Speicher.