Grailsで家計簿--第3章「MySQLに接続するGrailsアプリケーションを作成」--

前へ 次へ

3.1 MySQLにデータベースを用意する

MySQLには「kakeibo」というデータベースをコマンドラインインタプリタ「mysql」などで作成しておきます。そしたらあとは起動しっぱなしにしておくだけです。MySQLのダウンロードやインストールまでは本記事では割愛しますが、ひとつだけご提案。

MySQLをUTF-8で使うには

それは日本語などを使う際の文字コードの設定。Javaのデータベースアプリケーションは、文字コードUTF-8でヤルのが常識、とまでは豪語しませんが、それが一番無難な道。
Windows用のMySQLは、GUIのインストーラで「日本語とかを使えるようにする」という設定を忘れなければたぶんダイジョブと思いますが、Linux系は設定が必要かも知れません。
MySQLの日本語をUTF-8で扱うには、設定ファイル「my.cnf」の[mysqld]の設定を以下のようにします。
[mysqld]
port		= 3306
socket		= /tmp/mysql.sock
default-character-set= utf8
default-collation =utf8_general_ci
これでもなんかダメぇーというときは、コマンドで「kakeibo」データベースを作るときに文字コードを指定します。
create database kakeibo default character set utf8

3.2 Grailsアプリケーション「kakeibo」を作成

ではGrailsの作業に移りましょう。たとえばmygrailsというフォルダを作って、そこに移動した状態でコマンドを打ちます。

grails create-app kakeibo

これでmygrailsフォルダの下にkakeiboというフォルダができますから、以後はそれに移動して作業します。

cd kakeibo

3.3 MySQLのJDBCドライバを配備

"Connector/J"でおなじみのMySQLのJDBCドライバ、「mysql-connector-java-バジョーン番号-bin.jar」とかいう名前のヤツを、作成したkakeiboアプリケーションのフォルダkakeiboのすぐ下、「grails-app」と同じ階層に並んでいるlibフォルダの中に置きます。

3.4 MySQLのkakeiboデータベースの使用を設定

このアプリケーションkakeiboで、MySQLのkakeiboデータベースを使用するという設定をします。
それには、kakeiboフォルダの中の、さらにgrails-appフォルダ、さらにさらにconfフォルダと開いていき、DataSource.groovyと言うファイルを編集します。

MySQLを使うゼィという設定

まずは、MySQLをデータソースにするということを宣言しなければなりません。DataSource.groovyの一番最初の設定です。ここを以下のように書き換えます。 MySQLのドライバ、ユーザ、パスワードを設定
dataSource {
	pooled = true
	driverClassName = "com.mysql.jdbc.Driver"
	username = "ユーザ名"
	password = "パスワード"
}
ユーザ名には、データベースkakeiboにテーブル作成・データの読み書きができるユーザを設定します。
まぁーめんどくさければユーザ名root、パスワードは空でも、動きます。でもセキリティーが危ないかも知れないわヨー。

どの環境でどのデータベースを使うかという設定

この家計簿はあとでJARファイルに書き出して、ホンモノのTomcat環境で使いますから、データベースの設定は「development」環境と「production」環境の二つについて行っておきます。

それぞれの環境のさらに「dataSource」の設定を変更します。

development {
		dataSource {
			dbCreate = "update" 
			url = "jdbc:mysql://localhost/kakeibo"
		}
	}
	test {
		dataSource {
			dbCreate = "update"
			url = "jdbc:hsqldb:mem:testDb"	//この環境は使わないことを想定している
		}
	}
	production {
		dataSource {
			dbCreate = "update"
			url="jdbc:mysql://localhost/kakeibo"
		}
	}

これで「MySQLを使う」設定は完了です。なかなかめんどくさいですね。特に、JDBCドライバを用意するとか、データベースだけは作っておくとか、DataSource.groovyには「dataSource」と書いてあるブロックは最低2種類・3カ所について修正するとか(以上、ワタシ自身が再現しようとして詰まった点)いうところが忘れやすいですね。
次でいよいよサーバを起動しようってときに「スタックトレース」をゲロゲロと吐き散らして潰れやがったときには、このデータベースの設定に誤りのある可能性が大きいので、再確認してみてくださいネ。ついでながら、「スタックトレース」と「スタートレック」はどこか似ているbyO25