【发布时间】:2017-11-05 06:40:45
【问题描述】:
我的数据库背景来自 Django 框架(python)。在 Django 中,开始进行数据库迁移很容易:Django migrations。 Django 框架提供了基于模型创建迁移的工具,以及在数据库上应用迁移的工具。我认为这种工作方式在开发和生产中都有效。您不必自己编写迁移,框架会为您创建它们。
现在我已经用 Spring Boot 和 Hibernate 启动了一个项目。我将我的应用程序配置为将休眠与 JPA 一起使用。有了这些设置,我现在需要知道我的框架如何处理数据库迁移?我的意思是如果我更改一列,无论是它的类型,甚至可能删除它,那么我如何将数据库迁移到更改中?我知道spring boot会在启动时自动检测列的变化,并根据模型(实体)创建不存在的列。我想这与变量有关
spring.jpa.hibernate.ddl-auto
但是它如何处理现有的数据库对象呢?它是否也将列添加到它们,并且具有什么价值?我设置的默认值?如果我更改列类型怎么办?那么它可以处理变化吗?这些设置和 spring-boot 自动化数据库管理从长远来看可能还不够?
我想知道的是,关于如何使用 Spring Boot 和 hibernate 组合处理数据库迁移的最佳实践是什么?我相信大多数人使用这种组合是有一个标准的处理迁移?我希望它和 Django 一样简单……我知道 flyway,但不知道我是否真的需要它,或者它是否与我的这种组合(包括 spring boot 和 hibernate)一起使用得很多。
【问题讨论】:
-
是的,Flyway 和 liquibase 都是很好的数据库迁移工具。您使用spring和hibernate的事实确实无关紧要。如果您需要迁移数据库,它们是不错的选择。 ddl-auto 不是数据库迁移工具。恕我直言,这只是一种快速入门并从头开始生成模式的方法。不是我在生产中使用过的东西。
-
嘿,如果我们可以使用 hibernate-jpa 创建数据库和东西,那么迁移工具需要什么
标签: java spring hibernate jpa spring-boot