# Benötigte Testdatenbank



## y0dA (16. Okt 2009)

Hallo!

Ich bin gerade einer Evaluierung von Technologien für unser kommendes Projekt und hierzu bräuchte ich eine kleine feine Datenbank, welche ohne grossartige Konfiguration zum testen von Hibernate benutzt werden kann. Ich dachte hierbei an H2, leider komme ich mit der Dokumentation oder dem Tutorial nicht ganzu zu recht.
Kann ich mit H2 alle möglichen Datenbanken simulieren?
Was brauche ich dafür (nur den Driver?)
Welche DB empfiehlt sich hierbei oder gleich H2 embedded (nur hierbei kann ich mich irgendwie nicht einloggen-sprich so wie im Tutorial beschrieben bekomme ich folgende Fehlermeldung: Falscher Benutzer Name oder Passwort
Wrong user name or password [8004-121] 08004/8004 (Hilfe)).

mfg


----------



## tfa (16. Okt 2009)

H2 ist schon keine schlechte Wahl. Eine Alternative wäre Derby. Ein Beispiel für Embedded-Betrieb findest du hier.



> Kann ich mit H2 alle möglichen Datenbanken simulieren?


Nein. Das ist eine ganz normale DB, die einen gewissen Teil des Standards abdeckt und sicherlich einige produktspezifische Besonderheiten hat. Wie jede andere DB auch. Was hast du vor?


----------



## y0dA (16. Okt 2009)

Danke für die Infos.

Ich möchte einfach nur mal mittels Eclipse und den Hibernate Tools, eben von Eclipse aus, auf eine DB zugreifen um Reverse Egineering etc auszuprobieren, sowie in weiterer Folge einfach mal Spring und Hibernate zusammen testen. Wie schon erwähnt ich brauche einfach nur mal irgendeine DB um zu testen wie und ob die Dinge gut zusammenspielen.


----------



## ARadauer (16. Okt 2009)

Ich hab jetzt mir derby, hsql, mysql und oracle gearbeitet und muss sagen, dass eine lokale mysql Datenbank immer noch am gemütlichsten zum Testen ist. Gibt es unmengen an Tools und Tutorials und durch die weite Verbreitung im Web hat das auch die nötige Qualität.


----------



## tfa (16. Okt 2009)

Wieso? MySQL muss doch extra installiert werden, oder nicht?
Bei den Java-DBs reicht es, ein JAR in den Klassenpfad einzubinden und sie im embedded-Modus zu betreiben. Fertig. Keine Installation, keine Administration. Gemütlicher geht es nicht.


----------



## ARadauer (16. Okt 2009)

> Wieso? MySQL muss doch extra installiert werden, oder nicht?


Stimmt schon, ich hab jetzt aus meiner Sicht gesprochen. Ich mache Privat viel Webentwicklung, bei mir ist sowieso mein XAMPP immer am laufen...


----------



## maki (16. Okt 2009)

Ich finde MySQL sehr umständlich zum testen, dann lieber eine DB die ich speziell für den (automatisierten) Test erzeugen, bearbeiten und danach wieder löschen kann.

Derby, H2, HSQL, je nach verwendetem Persistenzframework.

Speziell mit automatisierten Test ist es ein Nachteil eine Db Instanz pro Rechner zu haben.


----------



## Prismapanda (16. Okt 2009)

MySQL muss nicht zwingend installiert werden. Selbst von xampp gibts ja inzwischen eine lite Version, die nicht installiert werden muss.
Und gegen automatisierte Tests spricht bei mysql auch nichts. Man muss sich halt genauso ums aufräumen kümmern. CREATE und DROP Database gibts da bspw.

Eine andere tuts aber genauso...H2 mag in der Einrichtung schneller und unkomplizierter sein.


----------



## maki (16. Okt 2009)

> MySQL muss nicht zwingend installiert werden. Selbst von xampp gibts ja inzwischen eine lite Version, die nicht installiert werden muss.
> Und gegen automatisierte Tests spricht bei mysql auch nichts. Man muss sich halt genauso ums aufräumen kümmern. CREATE und DROP Database gibts da bspw.


Die lite Version ist aber immer noch umständlicher zu nutzen als die 3 von mir erwähnten DBs, Maven2 kann jede jar dieser DBs automatisch runterladen & starten, ohne zutun von mir.
Was passiert denn wenn mehrere Tests Parallel laufen? Dann hat man besser auch keinen DB Server wie MySQL, schon gut diese Embedded DBs 

Daher ist MySQH imho für automatisierte Tests nicht zu empfehlen, zumindest auf Entwickler Maschinen, auf einem CI Server kann es schon wieder anders sein, aber nur wenn wirklich auch MySQL in Produktion benutzt werden würde, ansonsten umgeht man MySQL am besten


----------



## faulelotte (16. Okt 2009)

Wobei die Nutzung von z.B. MySQL auch Vorteile hat, zumindest wenn der Test die DB nicht wieder hinterher abräumt. Nämlich das man im Fehlerfall eventuell in der Datenbank nachsehen kann, was schiefgelaufen ist. Das klappt mit H2 u. Derby nicht, da die Verbindung zur Datenbank im Embeded Modus immer auf die jeweilige JVM beschränkt ist, die die DB nutzt.
Deshalb nutzte ich meist eine Kombination: reine Integrations-Unittests laufen gegen H2 und die Akzeptanztests dann gegen MySQL bzw. Postgres.


----------

