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

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

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

■Grailsのデータベース設定

MVCアーキテクチャーでは、データ利用のロジックは「モデル(Model)」として実装することになっています。Grailsで、このモデルに相当するのが「ドメインクラス(Domain Class)」と呼ばれるものです。今回は、これを作成してみましょう。

その前に、まずは「データベース利用の設定」について説明をしておきましょう。Grailsでは、利用するデータベースは、あらかじめ設定ファイルに記述をしておき、それを読み込んでセットアップをします。この設定ファイルは、「conf」フォルダ内にある「DataSource.groovy」というファイルになります。

Grailsアプリケーションでは、標準で「H2」と呼ばれるデータベースが設定されています。これはJava製のデータベースエンジンで、ファイルにデータベース情報を保存する他、メモリ上に保管して使うこともできます。メモリ上に置けばサーバーを終了したらそれはきれいさっぱり消えてしまいます。つまり、開発段階ではメモリ上にデータを置いていろいろとチェックをし、正式リリースの段階ではファイルに保存してデータを蓄積していく、というような使い分けができるわけですね。

またJavaのクラスですから標準でプロジェクトに組み込み、データベース環境ごとアプリに入れて持ち運べます。デプロイするサーバー先にデータベース環境を改めて用意する必要がないのです。こうした利点から、「とりあえず使うならH2で十分」ということで多用されています。

もちろん、H2以外のデータベースを使うこともできますが、それには設定ファイルの情報を書き換え、ドライバをインストールしないといけません(もちろん、使用するデータベースサーバーもないとダメですよ)。これらは開発者が自分で行う必要があります。

このファイルの内容を下のリスト欄に掲載しておきましょう。非常に多くの値が記述されていますね。ポイントをここで整理しておきましょう。

・dataSource
ここではアクセスするデータベースに関する基本設定がされています。driverClassNameで、使用するドライバクラスを指定します。デフォルトでは、org.h2.Driverクラスが指定されています。これがGrailsに組み込まれているH2のドライバクラスです。他、データベースアクセスに使用するユーザー名とパスワード等もここに用意しておけます。

・hibernate
これはO/RマッパーであるHibernateに関する設定です。これらは直接いじる必要はほとんどないでしょう。

・environments
ここに環境ごとのデータベース設定が記述されます。この中には「development」と「test」、そして「production」が用意されます。

・development
これが開発段階で使用される設定です。dataSourceというところにdbCreateurlという項目があります。dbCreateはデータベース作成の方式を示すもので、「create-drop」は起動時に生成し、終了時に破棄するやり方を示します。urlには「jdbc:h2:mem:○○」という値が設定されていますが、これがH2のメモリ上に保管されるデータベースを示す記述になります。

・test
これはテスト時に使用されるデータベース設定です。

・production
これが正式リリース時の設定です。dbCreateは「update」となっており、起動時に、既にあるデータベースをアップデートし使い続けます(つまりデータを蓄積していきます)。urlには「jdbc:h2:○○」とあります(memが抜けてます)が、これはファイルに保存したデータベースを示しています。その他、propertiesとして各種の設定情報が記述されています。

H2以外のデータベースを使いたければ、まずdataSourcedriverClassNameusername/password、そしてenvironment内にあるデータベースのurlを書き換えればいいことがわかります。ただし、ドライバソフトはH2以外は付属していないので何らかの形で用意する必要があります。

とりあえず、ここではH2の設定そのままに使うことにしましょう。

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

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

●プログラム・リスト●

dataSource {
    pooled = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
            pooled = true
            properties {
               maxActive = -1
               minEvictableIdleTimeMillis=1800000
               timeBetweenEvictionRunsMillis=1800000
               numTestsPerEvictionRun=3
               testOnBorrow=true
               testWhileIdle=true
               testOnReturn=true
               validationQuery="SELECT 1"
            }
        }
    }
}
※関連コンテンツ

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