Grails Quick Start(2)

気を取り直して、つづきです。

Configure a Data Source

アプリケーションが使うデータベース接続先の定義は、以下のようにクラスとして定義するようですね。
デフォルトでは、HSQLDBを使う設定になっています。
”アプリケーションフォルダ/grails-app/conf”にある、ApplicationDataSource.groovyを開くと、

class ApplicationDataSource {
   @Property String url = "jdbc:hsqldb:mem:testDB"
   @Property String driverClassName = "org.hsqldb.jdbcDriver"
   @Property String username = "sa"
   @Property String password = ""
}

@Property というのは、Groovyの記法で、クラスの属性とその属性用のsetter/getterメソッドが定義されるようです。一瞬、Java5のアノテーションかと思いましたが、JDK1.4でも動作するみたいです。
今のところは、このままにして進めるとしましょう。

Create a Domain Class

Domain Classというのは、アプリケーションの領域に存在するビジネスオブジェクト、、みたいな感じ?
以下のように、コマンドで雛形が作成されるようだけど、デフォルトではDomain Classのフィールドはデータベースにマップされるそうです。
作ってみましょう。
アプリケーションフォルダに移動してコマンドを実行ぉー。

> cd firstapp
> grails create-domain-class

例によって、Domain Classの名前を聞いてくるので、チュートリアルにあるとおり、”Book”とします。

> create-domain-class:
  [input] Enter domain class name:
Book
  [groovy] statements executed successfully
  [copy] Copying 1 file to ...
  [echo] Domain class created: grails-app/domain/Book.groovy

internal-create-test-suite:
  [groovy] statements executed successfully
  [copy] Copying 1 file to ...
  [echo] Created test suite: grails-tests/BookTests.groovy

モデルのソースらしきファイルと、そのテストモジュールらしいのができているようです。


できたgroovyファイルは、こんな風になっています。
firstapp\grails-app\domain\Book.groovy

class Book { 
    @Property Long id
    @Property Long version

    String toString() { "${this.class.name} :  $id" }
}

id と version というのがデフォルトで出来るようですね。
id はBookエンティティのユニークIDなのかな?
versionは分からん。。serialVer ではないですよね。。おいおい調べるとしましょう。
例に従って、Bookの属性を追加しておきましょう。

class Book { 
    @Property Long id
    @Property Long version

    @Property String title
    @Property String author

    String toString() { "${this.class.name} :  $id" }
}

ね、眠い。。今日はここまで。