我在Grails的那种新。 我与它的工作有点,但不是很多。 我很熟悉Java虽然。 我的问题是关于架构更新。 据我所知,Grails的通过查看域类创建Hibernate的映射,所以如果我添加了一个新的属性,Grails将自动在数据库属性添加一列。 正好相反还保持为真? 如果我删除一个属性,则该列中删除吗? 我没有看到这种行为,所以我想知道,如果它是一个配置问题。
如果我想进入更强大的数据库管理,我猜,我将不得不使用数据库管理插件或类似的东西Liquibase。 不过,我从事的项目是非常简单,就目前而言,如果我们去那个方向但我们还没有决定。
这取决于你dbCreate
在设置DataSource.groovy
。 如果它的create
或create-drop
然后当你重新启动一切都得到重建。 如果它的update
,然后新表和列得到补充。 如果是一些其他设置则不会更改。
update
不会做大多数人虽然期待。 这是悲观的,并不会做出可能导致数据丢失或损坏的变化。 所以它不会更改列的大小,即使是更广泛的(如VARCHAR(50)
- > VARCHAR(200)
它不会添加索引。 这将添加指定的是不是空的新列,但它增加了它可为空否则先前插入的行不会是有效的。 但它不会删除列或表。 所以,你可以很容易地到您重命名列,并有两个最终的情景 - 在新旧。
Liquibase是一个伟大的图书馆和http://grails.org/plugin/database-migration很受欢迎,所以很容易得到支持两者。 一旦你过去在发展中的一点,当你的模式一定程度上稳定下来,你应该考虑使用该插件。
文章来源: Does removing a property from a domain class cause an automatic update to the schema, whereby the corresponding column is dropped?