dataSource.groovy

dataSourceの設定はgrails-app/conf/DataSource.groovyにあります。↓がデフォルトのdataSource.groovy。

dataSource {
	pooled = false
	driverClassName = "org.hsqldb.jdbcDriver"
	username = "sa"
	password = ""
}
hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='org.hibernate.cache.EhCacheProvider'
}
// environment specific settings
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"
		}
	}
}

dataSourceブロックに共通設定を記述し、動作環境(development,test,production)ごとの設定は、environmentブロックに記述します。これはSeasarのenv.txtファイルで読み込むdiconファイルを切り替える仕組みと同じですね。独自の環境を追加することも可能で、使用する環境の指定は"grails -Dgrails.env=development run-app"の様に指定します。

設定のうちの"dbCreate"がDBの管理方法の指定で、以下のいずれかを指定します。

  • create-drop:Grailsを実行するたびにデータベースをDropしてCreateする。
  • create:データベースが存在しない場合には作成するが、変更はされない。既存のデータは削除される。
  • update:データベースが存在しない場合には作成し、存在する場合には変更する。既存データは削除されない。

コメントアウトしておくと何もしないようです。

DBについての情報をGrails側で管理し、DBの操作はGrailsがすべて自動で行うという方式が標準のようです。dbCreateをコメントすることで、DBを直接操作することもできますが。以前、Hibernateを使っていたときには、hbm.xmlの記述が面倒でわかりづらかったり、思い通りに動かなかったりでストレスになりました。もう少し使ってみないと何ともいえませんが、Grailsはどうなんでしょうか。。