mardi 5 février 2013

Démarrer une base de données h2 avec Maven

Pour travailler sur un projet un local, c'est bien pratique de pouvoir ne pas dépendre d'une base de données MySQL externe.

Une solution c'est de démarrer une base de données de type H2 ou HsqlDb.

Pour démarrer une base de données H2, il faut utiliser une le plugin exec-maven-plugin .

Je vous conseille d'ajouter le plugin dans un profile, on a fréquemment besoin du plugin exec plus d'une fois dans un projet.



Il faut ajouter la dépendance à H2.

J'ai setté la variable local-h2-directory par local-ignore, ça évite que les fichiers h2 soient supprimés quand vous faites un mvn clean.

L'argument -tcp indique que la connexion à la bdd se fait via tcp, vous pouvez aussi côté client, spécifier une connexion par fichier, ça évite de devoir démarrer la bdd h2, mais dans ce cas, une seule application pourra se connecter à la bdd. En mode tcp, plusieurs jvm peuvent accéder à la bdd.

Pour initialiser la base, utilisez sql-maven-plugin :



Par défaut, le login d'accès à une base h2 est "sa" et il n'y a pas de mot de passe, l'adresse jdbc : jdbc:h2:tcp://localhost/bdd;MODE=MySQL. Le paramètre ";MODE=MySQL" indique au driver de "parler" le sql en mode MySQL.

Je n'ai pas eu trop de souci, sur le projet dans lequel je l'ai rajouté, mais H2 n'est pas 100% compatible avec MySQL. Les vues par exemple ne sont pas gérés, et des paramètres sql trop spécifique ne fonctionne pas forcément de la même façon.