Grails memo

1.0 がでたので早速試したいところだが、ダウンロードが遅い...

1.0 RC4 で以前から試したかったことをやってみる。

既存のデータベースの利用。これは少し手探りと検索が必要だったが、結論として、原則テーブルは id bigint(20), version bigint(20) のカラムを持っていれば Domain クラスから参照できる。これらのフィールドを持たせられない場合には Grails のアプリケーションディレクトリ直下に hibernate というディレクトリを作り、そこに hibernate.cfg.xml とそれから参照する *.hbm.xml を用意する必要がある。
単純なケースしか試していないがモデルがたくさんある場合にはどうなるんだ?

Controller の中に def scaffold = モデル名 としておくと コントローラ/list, edit
などで CRUD できる。

grails generate-all とするとモデル名を聞いてくる。モデル名を入れるとそれに対するコントローラーと view, list, show, edit, create.gsp が view の中に作られる。

MySQL を使用するには grails-app/conf/DataSource.groovy を編集することになる。
前半が global で、後半で development など環境に応じた設定を書く様になっている。またアプリケーション直下の lib に jdbc driver をコピーしておく必要がある。


dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "..."
password = "..."
}
hibernate {
...
}
environments {
development {
dataSource {
url = "jdbc:mysql://localhost/test"
}
}
test {
dataSource {
...
...
}

Rails にならい、モデルに対するテーブル名は名前の複数形という記述も見つけたが、1.0 RC3 で試した範囲では複数形(s をつけたもの) にはなっていないし、既存のテーブルを参照させるためにもモデル名を単数形にすると s のついたテーブルをみてくれないようで、不本意ながらモデル名に s をつけることにした。