不从域类去除属性导致自动更新模式,由此,相应的列被删除?(Does removing a prope

2019-06-26 05:35发布

我在Grails的那种新。 我与它的工作有点,但不是很多。 我很熟悉Java虽然。 我的问题是关于架构更新。 据我所知,Grails的通过查看域类创建Hibernate的映射,所以如果我添加了一个新的属性,Grails将自动在数据库属性添加一列。 正好相反还保持为真? 如果我删除一个属性,则该列中删除吗? 我没有看到这种行为,所以我想知道,如果它是一个配置问题。

如果我想进入更强大的数据库管理,我猜,我将不得不使用数据库管理插件或类似的东西Liquibase。 不过,我从事的项目是非常简单,就目前而言,如果我们去那个方向但我们还没有决定。

Answer 1:

这取决于你dbCreate在设置DataSource.groovy 。 如果它的createcreate-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?
标签: grails gorm