Grails – Konfiguration der Datenbankverbindung

Es gibt grundsätzlich 2 Möglichkeiten mit Grails eine Datenbankverbindung (Datasource) zu konfigurieren.

  1. in den Dateien DevelopmentDataSource.groovy, ProductionDataSource.groovy und TestDataSource.groovy
    im Verzeichnis grails-appconf
  2. als JNDI Datasource in der Datei resources.xml von Spring

Für die Entwicklung nutze ich gern die MySql Datenbank, die wenn man sie über den xampp installiert, in einer perfekt abgestimmten Umgebung daher kommt, leicht zu installieren ist und über phpMyAdmin sehr gut administriert werden kann. Für unser Benutzermanagemenent habe ich dort die Datenbank grails_usermanagement angelegt. Die Konfiguration in der Datei DevelopmentDataSource.groovy, sieht dafür so aus:

class DevelopmentDataSource {
   boolean pooling = true
   String dbCreate = "update" // one of 'create', 'create-drop','update'
   String url = "jdbc:mysql://localhost:3306/grails_usermanagement?autoReconnect=true"
   String driverClassName = "com.mysql.jdbc.Driver"
   String username = "root"
   String password = ""
}

Der Parameter pooling besagt, ob ein Connection Pool für die Datenbankverbindungen genutzt werden soll, oder nicht. Standardmäßig wird die Connect Pool Implementierung aus dem Apache Commons Projekt verwendet. Der Parameter dbCreate besagt, ob die Datenbank-Struktur mit generiert werden soll. Für die mitgelieferte „In Memory – Datenbank“ Hypersonic ist standardmäßig der Wert auf „create-drop“ gesetzt. D.h., dass die Datenbank selbst bei jedem Testlauf entfernt und wieder erstellt wird. Manuell erstellte Datenbanken, wie unsere MySql Datenbank sollten den Wert „update“ haben. Für die „Production Datasource“ sollte dieser Parameter gänzlich auskommentiert werden.
Um die Konfiguration zu testen muss nur noch der JDBC Treiber (in unserem Fall die Datei mysql-connector-java-3.0.15-ga-bin.jar) in das Verzeichnis lib kopiert werden und die Applikation selbst mit grails run-app gestartet werden. Standardmäßig wird mit diesem Kommando die Development Datenbankverbindung genutzt, man kann aber auch als weiteren Parameter eine spezielle Datasource angeben:

grails dev run-app
grails prod run-app
grails test run-app

Das gleiche gilt für das Kommando grails war, mit dem die Webapplikation in ein Webarchiv (*.war Datei) verpackt wird.

Andere Parameter innerhalb der Konfiguration sind z.B. logSql und dialect, mit denen das Logging von SQL Befehlen ein- und ausgeschaltet bzw. ein spezieller Satz an SQL Befehlen für die Hibernate Konfiguration angegeben werden kann.

def logSql = true
def dialect = MySQLDialect.class

Als letztes bleibt noch die Konfiguration einer JNDI Datasource innerhalb von Spring, die in der Datei springresources.xml vorgenommen wird. Eine JNDI Datasource muss im jeweiligen Servlet Container (z.B. Tomcat) oder Application Server (z.B. Jboss) deklariert werden bevor sie in Spring über den Namen wie folgt angesprochen werden kann.

Eine gute Anleitung für die Definition einer JNDI Datasource innerhalb des Tomcats bietet die Tomcat Dokumentation.
Das nächste mal werde ich mich mit der Konfiguration von 1:n bzw. n:m Beziehungen zw. Objekten befassen, denn unsere Benutzer sollen auch in Gruppen zusammengefasst werden können.

Update: die aktuelle Version des Beitrags habe ich zur besseren Pflegbarkeit als Teil eines kleinen Tutorials zu Grails ausgelagert und direkt in der rechten Seitenleiste verlinkt.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit deinem WordPress.com-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

%d Bloggern gefällt das: