/ Migracja db / Flyway z Hibernate create-drop - wiosna, hibernacja, przelot

Migracja db Flyway z Hibernate create-drop - wiosna, hibernacja, przelot

Rozpoczynam moją pierwszą aplikację SpringFW i jachciałem stworzyć szereg wersjonowanych plików migracji Flyway do przyszłego wykorzystania w produkcji. Obecnie korzystam z lokalnego profilu i chciałbym upuścić i ponownie utworzyć wszystkie tabele za każdym razem, gdy uruchomię aplikację, ale gdy już to zrobię, wydaje mi się, że mam problem z Flywayiem, ponieważ jego wersje migracyjne będą uruchamiane tylko raz.

# 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

Idealnie byłoby skonfigurować Flyway do działaniawersja migruje za każdym razem, gdy znajduję się w profilu lokalnym, dzięki czemu mogłem ponownie użyć tych samych plików w produkcji. Prawda jest taka, nie wiem, czy to jest właściwy sposób myślenia, ponieważ jestem bardzo nowy w tych technologiach.

// File: FlywayConfig.java

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

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz zastąpić konfigurację Flyway w następujący sposób:

@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;
}

Lub jeśli używasz wiosennego rozruchu większego niż 1.3, możesz użyć FlywayMigrationStrategy

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

return strategy;
}