libro
www.tuyano.com
初心者のためのGroovy/Grails入門

ドメインクラス(Modelクラス)を作ろう! (5/5)

作成:2013-10-26 09:14
更新:2013-10-26 09:14

■ブートストラップを用意しよう

これで一応、ドメインモデルを利用するための必要最小限のものは用意できましたが、データの作成など一切ないので、アクセスしても「何のデータもないリストが表示されるだけ」ということになってしまいます。

これではしょうがないので、ダミーのデータをいくつか追加することにしましょう。Grailsには「ブートストラップ」と呼ばれる機能があります。これは、アプリケーション起動時に割り込んで処理を行わせる機能です。

grails-app」内の「conf」フォルダの中に「Bootstrap.groovy」というスクリプトが用意されています。これがブートストラップの処理を記述するためのファイルです。これを開くと以下のようなコードが書かれています。
class BootStrap {

    def init = { servletContext ->
    }
    def destroy = {
    }
}
BootStrapクラスの中に、initdestroyというメソッドがあります。initが起動時、destroyが終了時に実行される処理を用意するためのメソッドになります。ここに必要な処理を用意しておけば、アプリケーションの起動/終了時に自動的にそれが実行されます。

では、下のリスト欄のようにコードを作成しておきましょう。ここでは、initメソッドに、「SampleDataのデータが空っぽだったらダミーのデータを3つ作って保存しておく」ということをやっています。簡単にポイントを整理しておきましょう。

・データ数を調べる
データの数は、ドメインクラスの「count」というstaticメソッドでわかります。SampleData.countとすれば、SampleDataのデータ数がわかるのです。Groovyでは、整数の値は真偽値として利用できる(ゼロならfalse、それ以外はtrue)と前に説明したのを覚えてますか? これを利用し、if (!SampleData.count()) {……}とすれば、データがゼロの場合、その中の処理を実行するようになります。

・データの作成と保存
ドメインクラスの具体的な使い方は次回説明する予定ですが、データを新たに追加したければ、インスタンスを作り、「save」を呼び出すだけです。SampleDataならば、こんな感じです。
new SampleData(各フィールドの値).save();
保管する値は、引数に「name:"名前", mail:"メアド",age:100」といった具合に、それぞれのフィールド名と名前を記述していきます。Groovyでは、こんな具合に引数にラベルを指定して記述できます。

――というわけで、ダミーのデータも用意し、ドメインクラスを使う準備が整いました。実際にサーバーで実行し、 http://localhost:8080/GralisApp/sampleData/ にアクセスしてみてください。以下のようなテキストが表示されます。
[gralisapp.SampleData : 1, gralisapp.SampleData : 2, 
        gralisapp.SampleData : 3]
ダミーのデータが3つ、allで取得されていることがわかります。まぁ、これだけじゃデータの中身も見えないんで実用にはなりませんが、確かにSampleDataというドメインクラスを使ってデータが保存され、取得されていることは確認できました!

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

import gralisapp.SampleData

class BootStrap {

    def init = { servletContext ->
        if (!SampleData.count()) {
            def data1 = new SampleData(name:"tuyano", mail:"syoda@tuyano.com", age:20).save();
            def data2 = new SampleData(name:"hanako", mail:"hana@co", age:30).save();
            def data3 = new SampleData(name:"sachiko", mail:"sachi@co", age:40).save();
        }
    }
    def destroy = {
    }
}

※関連コンテンツ

「初心者のためのGroovy/Grails入門」に戻る