Grails – Konfiguration der Datenbankverbindung

Alle Datenbankverbindungen werden mittlerweile in der Datei grails-app/conf/DataSource.groovy abgespeichert. Eine typische Konfiguration für eine Verbindung zu einer Mysql Daten mittels JDBC (Java Database Connectivity) könnte so aussehen:

dataSource {
   pooled = true
   driverClassName = "com.mysql.jdbc.Driver"
   username = "Benutzername"
   password = "Passwort"
}
hibernate {
   cache.use_second_level_cache=true
   cache.use_query_cache=true
   cache.provider_class='org.hibernate.cache.EhCacheProvider'
}
// environment specific settings
environments {
   development {
      dataSource {
         // one of 'create', 'create-drop','update'
         dbCreate = "update"
         url = "jdbc:mysql://localhost:3306/usermanagement"
         logSql = true
      }
   }
   test {
      dataSource {
         dbCreate = "update"
         url = "jdbc:mysql://localhost:3306/usermanagement_test"
      }	
   }
   production {
      dataSource {
          dbCreate = "update"
          url = "jdbc:mysql://localhost:3306/usermanagement_prod"
      }
   }
}

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 Connector/J von Mysql) 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.

logSql = true
dialect = MySQLDialect.class

Als letztes bleibt noch die Konfiguration einer JNDI Datasource.
Eine JNDI Datasource muss im jeweiligen Servlet Container (z.B. Tomcat) oder Application Server (z.B. Jboss) deklariert werden bevor sie in Grails konfiguriert werden kann.

dataSource {
	// common settings here
}                     
environments {
  production {
     dataSource {
          url = "jdbc:mysql://liveip.com/liveDb"					
     }			
  }
}

Eine gute Anleitung für die Definition einer JNDI Datasource innerhalb des Tomcats bietet die Tomcat Dokumentation.

2 Kommentare

  1. […] die aktuelle Version des Beitrags habe ich zur besseren Pflegbarkeit als Teil eines kleinen Tutorials zu Grails […]

  2. Hallo Super tutorial.

    Sie haben lediglich vergessen zu erwähnen dass man sich den Driver holen soll bzw in der BuildConfig.groovy unter Dependencies einsetzen soll.

    http://stackoverflow.com/questions/8890240/how-to-make-mysql-work-on-grails-2-0

    Freundliche Grüsse

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: