/ / Hibernateを使用したフライウェイ・データベースの作成 - ドロップ - スプリング、ハイバネーション、フライウェイ

Hibernateを使用したフライウェイ・データベースの移行 - バネ、休止状態、フライウェイ

私は最初のspringFWアプリケーションを開始しています。将来のプロダクション用に一連のバージョンのFlyway移行ファイルを作成したかったのです。 今はローカルプロファイルを使用していますが、アプリケーションを実行するたびにすべてのテーブルを削除して再作成したいと思っていますが、これを行うとマイグレーションファイルは一度しか実行されないため、Flywayに問題があるようです。

# File: application-local.properties

spring.jpa.hibernate.ddl-auto=create-drop

# FLYWAY (FlywayProperties)
flyway.locations=classpath:db/migration
flyway.enabled=true
flyway.baseline-version= 1
flyway.sql-migration-prefix=V
flyway.sql-migration-suffix=.sql
flyway.baseline-on-migrate=true
flyway.validate-on-migrate=false

理想的には、Flywayを実行するように設定したい私はローカルプロファイルの中で毎回バージョン管理されたマイグレーションを実行するので、後で同じファイルを本番環境で再利用することができます。 真実は、私はそれらの技術が非常に新しいので、それが正しい考え方であるかどうかは分かりません。

// File: FlywayConfig.java

@Configuration
@Order(Ordered.LOWEST_PRECEDENCE)
@Import(FlywayAutoConfiguration.FlywayConfiguration.class)
public class FlywayConfig { }

回答:

回答№1は2

Flywayの設定を次のように変更することができます:

@Bean
@Profile("local")
public Flyway flyway(DataSource dataSource) {
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource);
flyway.setLocations("classpath:db/migration");
flyway.clean();
flyway.migrate();

return flyway;
}

また、1.3以上のスプリングブートを使用している場合は、FlywayMigrationStrategy

@Bean
@Profile("local")
public FlywayMigrationStrategy cleanMigrateStrategy() {
FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() {
@Override
public void migrate(Flyway flyway) {
flyway.clean();
flyway.migrate();
}
};

return strategy;
}