ドメインクラス(Modelクラス)を作ろう! (1/5)
作成:2013-10-26 09:00
更新: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というところにdbCreate、urlという項目があります。dbCreateはデータベース作成の方式を示すもので、「create-drop」は起動時に生成し、終了時に破棄するやり方を示します。urlには「jdbc:h2:mem:○○」という値が設定されていますが、これがH2のメモリ上に保管されるデータベースを示す記述になります。
・test
これはテスト時に使用されるデータベース設定です。
・production
これが正式リリース時の設定です。dbCreateは「update」となっており、起動時に、既にあるデータベースをアップデートし使い続けます(つまりデータを蓄積していきます)。urlには「jdbc:h2:○○」とあります(memが抜けてます)が、これはファイルに保存したデータベースを示しています。その他、propertiesとして各種の設定情報が記述されています。
H2以外のデータベースを使いたければ、まずdataSourceのdriverClassNameとusername/password、そしてenvironment内にあるデータベースのurlを書き換えればいいことがわかります。ただし、ドライバソフトはH2以外は付属していないので何らかの形で用意する必要があります。
とりあえず、ここではH2の設定そのままに使うことにしましょう。
その前に、まずは「データベース利用の設定」について説明をしておきましょう。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というところにdbCreate、urlという項目があります。dbCreateはデータベース作成の方式を示すもので、「create-drop」は起動時に生成し、終了時に破棄するやり方を示します。urlには「jdbc:h2:mem:○○」という値が設定されていますが、これがH2のメモリ上に保管されるデータベースを示す記述になります。
・test
これはテスト時に使用されるデータベース設定です。
・production
これが正式リリース時の設定です。dbCreateは「update」となっており、起動時に、既にあるデータベースをアップデートし使い続けます(つまりデータを蓄積していきます)。urlには「jdbc:h2:○○」とあります(memが抜けてます)が、これはファイルに保存したデータベースを示しています。その他、propertiesとして各種の設定情報が記述されています。
H2以外のデータベースを使いたければ、まずdataSourceのdriverClassNameとusername/password、そしてenvironment内にあるデータベースのurlを書き換えればいいことがわかります。ただし、ドライバソフトはH2以外は付属していないので何らかの形で用意する必要があります。
とりあえず、ここではH2の設定そのままに使うことにしましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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" } } } }
※関連コンテンツ