# MySQL und HSQLDB



## windl (5. Sep 2015)

Hallo,

ich habe ein Programm(ausgewachsenes Mediaprogram) geschrieben, welches im Augenblick mit einer MySQL Datenbank auf einem Server zusammenarbeitet. 
Dieses Programm speichert MP3 Daten, Filme usw. dort ab. Funktioniert bis dahin wirklich super. 

Nun ist es aber evtl. ein wenig übers Ziel hinausgeschossen, immer gleich eine komplette MySQL Installation aufzusetzen wenn man nicht wirklich so viele MP3 bzw. Filmdaten zentral verwalten will/muss. 
Vielleicht will man die Mediaanlage auch nur lokal auf einem Rechner betreiben?

Daher meine Frage - wie würdet Ihr an das Thema herangehen wenn man BEIDE Datenbanken bedienen möchte? Ich stelle mir irgendwie eine zentrale Klasse vor, die dann entscheidet ob bei der Installation MySQL oder HSQLDB ausgewählt wurde und dementsprechend das SQL-Statement generiert. 
Nun ist es aber noch so, dass man sog. Plugins selber erstellen kann und auch dort SQL-Skripte einbaut! Wie würde ich so etwas generisch hinbekommen? 

Anregungen?

Danke
Uwe


----------



## marcobehler (7. Sep 2015)

Hi Uwe,
du hältst die Daten alle als Blob in der Datenbank? Warum nicht im Filesystem und nur Metadaten in der DB?

Ansonsten fährst du natürlich genau in das Gebiet der ORMs. Ich würde dir jOOQ empfehlen, ansonsten ist die dicke Keule Hibernate. Dynamisch testen welche DB du hast kannst du indem du entweder auf die DataSources ein instanceof machst oder eben gleich deinen jdbc string matched (jdbc:mysql: etc )


----------



## Tom299 (8. Sep 2015)

Ich würde mir beim Installieren ein config.properties oder sowas anlegen und den Benutzer dann fragen, ob er einen DB-Server oder eine File-DB verwenden möchte und mir das in der config merken. Ich glaube nicht, daß man beides zeitgleich vermischen will?

Und anhand der Config weißt du ja dann, welche DB-Klasse du laden mußt und wie der Connect-String dazu aussieht.

Du kannst dir auch mal SQLite anschauen anstatt HSQLDB, mir gefällt das persönlich besser.


----------



## windl (23. Sep 2015)

Hallo,
vielen Dank für die Antworten. Ich habe eine zentrale Klasse für alle SQL-Queries erstellt.
Ich wollte nun wissen, ob HSQLDB mit den MySQL-Queries zurecht kommt oder ob es dort Probleme gibt.
Bis jetzt habe ich einige wenige Tests gemacht und musste positiv feststellen, dass beide SQL-Ausdrücke auf der jeweils anderen Engine laufen. 

Somit ist es nicht notwendig eine übergeordnete Funktionalität aufzubauen um mit beiden DB's zu kommunizieren.

Sollte ich etwas übersehen haben - ich bin für alles dankbar


----------



## Joose (23. Sep 2015)

Es handelt sich bei beiden um SQL Datenbanken. Sprich beide verstehen SQL, aber natürlich gibt es bei SQL auch Dialekte. Sprich bei speziellen Dingen oder ein paar anderen Sachen kann es sein das es Probleme/Unterschiede gibt. Aber Standard Befehle für INSERT, UPDATE, DELETE, SELECT sollten passen


----------

