Intro
Über S.H.: von Struts über JSF, Spring MVC zu Grails. Erstellt Grails Podcast.
Motivation
Framework wie Rails – Convention over Configuration, DRY
Spring MVC im Hintergrund
Grails vs. Rails Benchmark – Skaliert weitaus besser als Rails. 1.0 Release im Sommer, 0.5 im Mai.
grails clean
grails update
zum Update, soll schmerzlos sein.
Benutzte Frameworks
Spring: Spring DI + Spring MVC
Hibernate
SiteMesh – Layouting
Java EE – Integration
Standalone oder Hib-Mappings f Legacy-Schemata; EJB3-Integration; vorhandene Spring-Beans können verwendet werden.
Quickstart siehe am besten hier.
ApplicationBootStrap zum Persistieren.
TL-Erzeugung. Zur Laufzeit deploybar, ebenso mit Controller + Service.
Server-Start runApp.groovy. snipplr.com
MVC in Grails
Model: Domain-Klassen etc.
class Podcast {
String title
String feedUrl
}
View: Groovy SP oder JSP; dynamic TagLibs
Controller: Grails Controller + Grails Service
Object-Relational Mapping GORM. Equals()/hashCode() werden automatisch + dynamisch erstellt.
grails create-domain-class
Mapping 1:1
class Podcast {
Author author
String title
}
Mapping 1:n
class Podcast {
def hasMany = [ episodes : Episode ]
String title
}
Mapping m:n
class Podcast {
def hasMany = [ episodes : Episode ]
String title
}
class Author
{
def hasMany = [ podcasts : Podcasts ]
}
GORM: Dynamic Finders
Podcast.findByTitle(), QBE + HQL unterstützt.
Constraints
class Podcast {
String title
String feedUrl
static constraints = {
title(size:1..50)
feedUrl(unique:true)
}
}
GORM DB Konfiguration
development/production/test
Classe Development[…]DataSource ändern. Standard: Development.
View-Technologien
Die meisten verwenden GSP wg. der Dynamic Tag Libs.
Grails Controller
Generierbar (mit CRUD), wird dynamisch geladen. Immer alle CRUD-Operationen werden erstellt, DELETE kann z.B. nicht ausgeschlossen werden. Controller und Views müssen entsprechend manuell angepasst werden.
Parameter, Session, Flash-Objekte.
render()-Methode sehr mächtig – AJAX
HTTP-MEthod-Restrictions.
Dynamisches Scaffolding
im Bsp.: def scaffold= Podcast
Services
Kapselung von Business-Logik.
Buchempfehlung Getting Started with Grails (InnoQ)
Schreibe einen Kommentar