Grails 1.1 Beta 1リリース、拡張テスト、Gorm、足場、プラグインシステム
GORM
より良いGORMイベント
GORMはすでにbeforeInsert,beforeUpdate,beforeDelete eventsをサポートしており、afterInsert,afterUpdate,afterDelete eventsのサポートが追加されました
ベース・タイプ・セットのストレージのサポート
GORMは、String、Integerのようなベースタイプのセットのストレージを1つのjoin tableでサポートします.
class Person {
static hasMany = [nicknames:String]
}
データバインド機能の強化
プロパティの自己とデータのバインドが容易になりました.以前のバージョンでは、次のように使用されていたかもしれません.
person.properties = params
これにより、requestのすべての変数がpersonにバインドされます.すべてのデータをバインドしたくない場合はbindDataメソッドを使用します.subscript operatorを使用して、部分の変数をバインドできます.
person.properties["firstName","lastName"] = params
domainのすべてのプロパティのサブセットを取得するには、次のようにします.
person.properties["firstName","lastName"].each { println it }
オブジェクトを読み取り専用で取得
readメソッドを使用して、「読み取り専用」オブジェクトを取得できます(変更、削除はできません):
def book = Book.read(1)
デフォルトのソート
domainでsortを宣言することで、関連オブジェクトのソート方法を指定できます.
class Book {
String
title
static
mapping = {
sort "title"
}
}
関連付けでsortを宣言することもできます.
class Author {
static
hasMany = [books:Book]
static
mapping = {
books sort:"title"
}
}
Batch Fetching
GORMは、domainでDSLを使用してbatch fetching(an optimization of lazy loading)を構成することをサポートします.
class Book {
String
title
static
mapping = {
batchSize 15
}
}
関連付けで使用することもできます.
class Author {
static
hasMany = [books:Book]
static
mapping = {
books batchSize:15
}
}
強化されたダイナミックルックアップ
ダイナミックルックアップによりInListのサポートが追加されました.
def groovyBooks = Book.findByAuthorInList(['Dierk Koenig', 'Graeme Rocher'])
ダイナミックルックアップでquery cacheを使用できるようになりました.
def books = Book.findByTitle("Groovy in Action", [cache:true] )
動的ルックアップでは、悲観的ロック(pessimistic lock):
def books = Book.findByTitle("Groovy in Action", [lock:true] )
レガシー・データベースの一対多の関係の処理
単一の一対多の関係は、joinTableプロパティを使用して、乗っているデータベースでのマッピング方法を変更できます.
class Book {
String
title
static
belongsTo = Author
static
hasMany = [authors:Author]
static mapping = { authors joinTable:[name:"mm_author_books" , key:'mm_book_id' ] } } class Author { String name
static hasMany = [books:Book] static mapping = { books joinTable:[name:"mm_author_books" , key:'mm_author_id'] } }
プラグイン
グローバルプラグイン
すべてのgrailsプログラムで使用できるグローバルプラグインのインストールがサポートされます.
grails install-plugin webtest -global
複数のプラグインソース(Repository)をサポート
Grailsは現在、USERを介してサポートされています.HOME/.grails/settings.groovyファイルまたはgrails-app/conf/BuildSettings.groovyファイルは、複数のプラグインソースを構成します.上記のファイルには、対応する情報が含まれている必要があります.
grails.plugin.repos.discovery.myRepository="http://svn.codehaus.org/grails/trunk/grails-test-plugin-repo"
grails.plugin.repos.distribution.myRepository="https://svn.codehaus.org/grails/trunk/grails-test-plugin-repo"
Automatic Transitive Plugin Resolution
プラグインをSVNに配置する必要がなくなり、Grailsアプリケーションが最初にロードされるとプラグインのmetadataによって自動的にインストールされます.また,プラグインの依存問題も解決された.
テスト
新しいテストフレームワーク
1.0です.xのバージョンでプラグインとして表示されたテストフレームワーク(test framework)がGrailsに統合されました.
あしば
テンプレートとダイナミック足場
動的足場はテンプレートを使用できます.
install-templates
関連テンプレートを使用できます.その他の関連リソース:
Changelog: http://jira.codehaus.org/browse/GRAILS?report=com.atlassian.jira.plugin.system.project:changelog-panel Download: http://grails.org/Download Documentation: http://grails.org/doc/1.1