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はどうなんでしょうか。。