Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Grailsでデータベースを利用しよう

Groovy+GrailsでRailsなWeb開発 第3回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/05/18 14:00

 この連載ではJavaプログラマを対象に、Groovyというスクリプト言語を使ってRuby on Railsライクな開発を行えるWebアプリケーションフレームワーク「Grails」を紹介します。今回は、MVCの「Model」の部分を担当するドメインクラスについて説明しましょう。

目次

はじめに

 今回は、MVCの「M(Model)」について説明を行うことにしましょう。Modelは、データベースとのやり取りなどを管理する部分です。データベースに問い合わせをしたり、必要なデータを受け取ったりするのはすべてモデルの担当となります。

 ただし、勘違いしてはならないのが、「モデルの中に、特定のデータベースに接続しデータを取得する処理を作成するわけではない」という点でしょう。モデルの中で、データベース接続の処理を書いたり、クエリーを送信したりすることはありません。それらはすべて「ドメインクラス」が行ってくれるのです。

対象読者

  • JSPを書くのは正直しんどい・・・と近頃感じる人。
  • Ruby on Railsスタイルの開発に興味があるという人。
  • MVCフレームワークをJavaで学びたい、という人。

Grailsのデータベース利用

 多くのMVCフレームワークには、各種のデータベースに接続するための基本的な仕組みが用意されています。Grailsも同じで、データベースアクセスの処理をプログラマが書くことはまずありません。必要なのは、利用するデータベースにアクセスするために必要な情報を提供することです。どういうデータベースを使うのか、その情報さえあれば、Grailsはちゃんとそこにアクセスできるのです。

 Grailsでデータベースを利用するためには、大きく2つのものを用意する必要があります。それは「設定ファイル」と「ドメインクラス」です。これらは次のようなものです。

  • 「設定ファイル」-Grailsでは、データベースの種類や、利用するテーブルの情報などを専用の設定ファイルに記述します。Grailsでは設定ファイルを記述することはあまりありませんが、これらについてはファイルに記述をしておく必要があります。
  • 「ドメインクラス」-MVCの「M」を担当するプログラムです。Grailsでは、Modelはドメインクラスと呼ばれるクラスとして定義します。ここでテーブルの構造や必要な処理などを記述します。

 設定ファイルは、Webアプリケーションごとに1つ記述するだけです。これは利用するデータベースに関する情報が用意されます。ドメインクラスは、そのデータベースに保管されているテーブルに関する情報が記述されます。通常、利用するテーブルがいくつかあれば、それぞれにドメインクラスを作ります。

データソース設定の用意

 では、データベースの設定ファイルから作成しましょう。設定ファイルは、grails-app内の「conf」フォルダ内にある「DataSource.groovy」ファイルに記述されています。ここには、dataSourcehibernateenvironmentsといったプロパティが用意されています。それぞれデータソース、Hibernate、実行環境の設定です。ここにHibernateの設定が含まれていることに驚いた人もいることでしょう。実をいえば、GrailsにはHibernateが内包されており、データベースアクセスの際に利用されているのです。

 初期状態での記述をチェックしましょう。まずはデータベースアクセスに直接関係する「dataSource」からです。これは次のようになっています。

dataSource {
	pooled = true
	driverClassName = "org.hsqldb.jdbcDriver"
	username = "sa"
	password = ""
}

 初期状態では、使用データベースは「HSQLDB」になっています。HSQLDBはオープンソースのpure Javaなデータベースプログラムです。データベースプログラムとしては非常に小さいもので、Grailsに内蔵されています。

 ここでは、driverClassNameHSQLDBのドライバークラス(org.hsqldb.jdbcDriver)を設定し、usernameにユーザー名(sa)、passwordにパスワード(空のテキスト)が指定されています。このように、ドライバークラスと利用者名、パスワードを指定するだけで、そのデータベースにアクセスできるようになるのです。

データベースの環境設定

 続いて、environmentsをみましょう。こちらは、データベースアクセスに関する環境設定を行うもので、次のように記述されています。

environments {
	development {
		dataSource {
			dbCreate = "create-drop" // one of 'create', 'create-drop','update'
			url = "jdbc:hsqldb:mem:devDB"
		}
	}
	test {
		dataSource {
			dbCreate = "update"
			url = "jdbc:hsqldb:mem:testDb"
		}
	}
	production {
		dataSource {
			dbCreate = "update"
			url = "jdbc:hsqldb:file:prodDb;shutdown=true"
		}
	}
}

 environmentsの中に、developmenttestproductionといったプロパティが用意されており、それぞれの中にdataSourceが設定さていることが分かります。この3つの値は、それぞれ「開発段階」「テスト用」「正式公開用」の設定です。開発時に使われるのは、developmentに記述されている設定になりますので、ここを設定すればデータソースを変更できます。

 dataSourceでは、dbCreateでデータ作成のモード指定を、urlで接続するデータベースのURLをそれぞれ指定します。dbCreateが少々分かりづらいですが、これは「データを新規に作る(create)」「データを作成し、終了時に破棄する(create-drop)」「既にあるものを更新していく(update)」という3つのモードのいずれかを指定します。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 掌田 津耶乃(ショウダ ツヤノ)

    三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。 ※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開中。またGoogle+プロフィールはこちら。

バックナンバー

連載:Groovy+GrailsでRailsなWeb開発

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5