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.
[…] die aktuelle Version des Beitrags habe ich zur besseren Pflegbarkeit als Teil eines kleinen Tutorials zu Grails […]
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