我的数据库背景来自于Django框架(Python)。在Django中,开始进行数据库迁移很容易:Django迁移。Django框架提供了基于模型创建迁移的工具,以及将迁移应用到数据库的工具。我认为这种做法在开发和生产中都很有效。你不必自己编写迁移,框架会为你创建。
现在我使用Spring Boot和Hibernate启动了一个项目。我配置我的应用程序使用JPA的Hibernate。在这些设置下,我现在需要知道我的框架如何处理数据库迁移?我的意思是,如果我更改一个列,无论是它的类型还是可能删除它,那么如何将数据库迁移到更改后的状态?我知道Spring Boot将在启动时自动检测列的更改,并基于模型(实体)创建不存在的列。我猜它与变量
spring.jpa.hibernate.ddl-auto
有关。但它如何处理现有的数据库对象?它也会将该列添加到它们中吗?值是多少?我设置的默认值?如果我更改了列类型怎么办?它能处理这个变化吗?这些设置和Spring Boot自动化的数据库管理可能不足以在长期内使用?
我想知道的是,如何处理Spring Boot和Hibernate组合的数据库迁移最佳实践是什么?我相信有一个标准,大多数使用这种组合的人都会处理迁移?我希望这与Django一样容易...我知道Flyway,但不确定我是否真正需要它,或者它是否在我的组合中经常使用(包括Spring Boot和Hibernate)。