3

Grails 2.0 の利点の 1 つは、アプリケーション サーバーを再起動する必要なく、開発中にドメイン クラスを変更できることです。これは機能しますが、ドメイン クラスを変更すると、すべてのブートストラップ データが失われ、基本的に目的が果たせなくなります。デフォルトの h2 データベースを使用しています。

これを回避する最善の方法は何ですか? Postgres のような外部 DB に移動する必要がありますか?

4

1 に答える 1

6

DataSource.groovy新しく作成された Grails 2 アプリのデフォルトには

environments {
    development {
        dataSource {
            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
        }
    }

これcreate-dropは、アプリケーションが再起動するたびに、データベースが最初から再作成されることを意味します。再起動後も持続するデータベースが必要な場合は、これを次のように変更します

dataSource {
    dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
    url = "jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}

(つまり、 を に変更create-dropしてupdateから削除し:memますurl)。ただし、ドメイン クラスに加えることができるすべての変更が、update適用できる限られたスキーマ変更に反映されるわけではないことに注意してください。プロパティの追加は問題ありませんが、プロパティを削除したり、スキーマの生成に影響する制約を変更したりすると、データベースを削除して再作成する必要がある場合があります (アプリを停止し、devDb ファイルを削除して、もう一度起動します)。

于 2012-08-27T12:41:16.473 に答える