Na Grails se mi líbí několik vlastností:
- GORM = ORM založený na Hibernate pro práci s databází. Zvláště se mi libí možnost automatické aktualizace schématu databáze podle definice objektu v Grails. Způsob práce vychází z filozofie ActiveRecord
- integrovaný scheduler - opět jako i jiné komponenty Grails je založen na existujícím projektu Quartz. Jednoduše si nadefinujete periodicitu spouštění a spouštěný kód má přistup k celému prostředí Grails.
- systém pluginů - už nyní najdete pluginy pro autentizaci, práci s obrázky atp. Zde je prostor pro celou komunitu rozšířovat celý systém. Pro Ruby On Rails dneska existují stovky pluginů.
- systém development, test a production prostředí, pro které si mohu nadefinovat připojení na jiné databáze. Mohu tam velmi lehce provozovat a přepínat mezi vývojovou verzí databáze z testovacími daty a produkční databází.
- dokumentace - ta je psána průběžně již od počátku projektu. K sehnání je již i kniha 'The Definite Guide to GRAILS' a pro Groovy jako takové k dispozici s nakladelství Manning 'Groovy in Action'. Pěkný je i reference guide.
Zde jsem zmínil opravdu jen minimum z toho, co Grails nabízí. Zájemci mohou navštívit přímo stránky projektu na adrese www.grails.org a projít si další detaily.
Pro fajnšmekry uvádím i trochu kódu. Ten ukazuje jak definovat databázové objekty a jejich jednoduché vazby mezi sebou. Taktéž si zde v můžete nadefinovat různá omezení a podmínky pro jednotlivé položky modelu. Z vaší definice v Grails is systém vytvoří předpis pro Hibernate a provede aktualizaci databáze.
// objekt dokumentu
class Document {
static hasMany = [ attachments : Attachment]
String title
String description
String category
Integer att_count
String category1
static constraints = {
title(unique:true, blank:false)
category(blank:true)
category1(blank:true, nullable:true)
att_count(blank:true, nullable:true)
}
}
// příloha, která patří k dokumentu
class Attachment {
String title
String description
Document document
static constraints = {
title(blank:false)
}
}