Zum Inhalt springen
Der Guide für ein smartes Leben.
Sicherheit & Internet:Internet:Web-Entwicklung

Teil 2: Grails, die PHP-Alternative

Autoren: Redaktion pcmagazin und Timo Haberkern • 22.4.2009 • ca. 1:40 Min

Inhalt
  1. Grails, die PHP-Alternative
  2. Teil 2: Grails, die PHP-Alternative
  3. Teil 3: Grails, die PHP-Alternative

Kaum zu glauben, aber damit haben wir tatsächlich bereits die erste Datenbankzugriffsklasse fertiggestellt. Den gesamten Rest übernimmt der Grails-Datenbanklayer GORM (Groovy Object Relational Mapper). Den eigentlichen Zugriff auf die Datenbank, die Erzeugung der SQL-Statements und Generierung der...

Kaum zu glauben, aber damit haben wir tatsächlich bereits die erste Datenbankzugriffsklasse fertiggestellt. Den gesamten Rest übernimmt der Grails-Datenbanklayer GORM (Groovy Object Relational Mapper). Den eigentlichen Zugriff auf die Datenbank, die Erzeugung der SQL-Statements und Generierung der Datenbanktabellen übernimmt nun das Framework für Sie.

Im Hintergrund verrichten dabei bekannte Bibliotheken wie beispielsweise Hibernate ihren Dienst, um den Zugriff auf die Datenbank und die Umsetzung von Objektdaten in flache relationale Strukturen zu realisieren.

Die Verbindungseinstellungen für die jeweiligen Datenbanken können sehr einfach über eine einzige Konfigurationsdatei festgelegt werden. Je nach Umgebung ist es möglich, verschiedene Parameter einzustellen.

Dies ist besonders praktisch, wenn Sie auf Ihrem Entwicklungssystem eine andere Datenbank einsetzen, als auf dem Produktivsystem. Das folgende Listing zeigt ein Beispiel hierfür.

development {
dataSource {
dbCreate = "create-drop" // one
of 'create', 'create-drop','update'
url = "jdbc:hsqldb:mem:devDB"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost/
databasename"
}
}

Selbstverständlich stehen durch die GORM-Schicht noch viele weitere Funktionen zur Verfügung. Fremdschlüsselbeziehungen, Validierung, Sets, Default-Werte, Vererbung und vieles andere mehr, sind mit einfachen Mitteln realisierbar.

Das folgende Listing zeigt beispielsweise die Definition einer Viele-zu-Viele-Beziehung zwischen zwei Klassen und die Festlegung von Validatoren für mehrere Tabellenfelder.

class User {
static belongsTo = Project
static hasMany = [projects:
Project]
String userid
String password
String email
static constraints = {
userid(unique:true,
length:5..15)
password: (matches:/[wd]+/,
length:6..15)
email(email:true)
}
}
class Project {
static hasMany = [users:User]
String name
}

Dieses kleine Beispiel zeigt bereits, was die Model-Schicht von Grails leisten kann. So wird die Viele-zu-Viele-Beziehung auf Datenbankebene automatisch über eine Kreuzreferenztabelle aufgelöst und bei Abfragen die notwendigen SQL-Joins automatisch vorgenommen.

Grails unterstützt von Haus aus eine ganze Reihe von Datenbanken, darunter alle populären Datenbank-Server- Systeme wie MySQL, MS SQL, Oracle, DB2, Postgre SQL oder auch SAP DB. Für nicht offiziell unterstützte Datenbanken, stehen oftmals Community-Treiber zur Verfügung, sodass auch der Zugriff auf Exoten möglich wird.

View

Der Zugriff auf eine Datenquelle ist natürlich nur die halbe Miete. Die gelesenen Informationen müssen dem Benutzer selbstverständlich auch aufbereitet dargestellt werden. Grails bietet eine Reihe von Hilfsmitteln, die die Erstellung von Seiten und Inhalten vereinfachen.

Die sogenannten Groovy Server Pages (GSP) sind für die Aufbereitung der Daten verantwortlich, die vom Controller zur Verfügung gestellt werden. Ähnlich wie bei anderen Skriptsprachen wie PHP oder den Java Server Pages (JSP) wird hier HTML-Quellcode durch die Verwendung von Grails erzeugt.