4

私はGrailsではちょっと新しいです。私はそれを少し使ってきましたが、それほど多くはありません。しかし、私はJavaにかなり精通しています。私の質問はスキーマの更新に関するものです。Grailsはドメインクラスを調べてHibernateマッピングを作成することを理解しています。したがって、新しいプロパティを追加すると、Grailsはデータベースにそのプロパティの列を自動的に追加します。逆も当てはまりますか?プロパティを削除すると、その列は削除されますか?私はその振る舞いを見ていません、そしてそれが構成の問題であるかどうか疑問に思います。

より堅牢なデータベース管理を行いたい場合は、データベース管理プラグインまたはLiquibaseのようなものを使用する必要があると思います。しかし、私が取り組んでいるプロジェクトは非常に単純であり、現時点では、その方向に進むかどうかはまだ決定していません。

4

1 に答える 1

10

dbCreateの設定によって異なりますDataSource.groovycreateまたは、再起動するとcreate-dropすべてが再構築されます。その場合update、新しいテーブルと列が追加されます。他の設定の場合、変更は行われません。

updateしかし、ほとんどの人が期待することをしません。これは悲観的であり、データの損失や破損につながる可能性のある変更は行いません。そのため、幅が広くても列のサイズは変更されません(例:VARCHAR(50)-> VARCHAR(200))。インデックスは追加されません。null以外として指定された新しい列が追加されますが、それ以外の場合は以前に挿入された行が無効になるため、null可能として追加されます。ただし、列やテーブルは削除されません。したがって、列の名前を変更して、古いものと新しいものの2つになるシナリオに簡単に入ることができます。

Liquibaseは優れたライブラリであり、http ://grails.org/plugin/database-migrationが人気があるため、両方のサポートを簡単に受けることができます。スキーマがある程度安定した開発のポイントを過ぎたら、プラグインの使用を検討する必要があります。

于 2012-07-12T04:47:07.947 に答える