Package org.flywaydb.core.api.migration
Interface JavaMigration
- All Known Implementing Classes:
BaseJavaMigration
public interface JavaMigration
Interface to be implemented by Java-based Migrations.
Java-based migrations are a great fit for all changes that can not easily be expressed using SQL.
These would typically be things like
- BLOB & CLOB changes
- Advanced bulk data changes (Recalculations, advanced format changes, …)
Migration classes implementing this interface will be automatically discovered when placed in a location on the classpath.
Most users will be better served by subclassing subclass BaseJavaMigration
instead of implementing this
interface directly, as BaseJavaMigration
encourages the use of Flyway's default naming convention and
comes with sensible default implementations of all methods (except migrate of course) while at the same time also
providing better isolation against future additions to this interface.
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Whether the execution should take place inside a transaction.default ResolvedMigration
getResolvedMigration
(Configuration config, org.flywaydb.core.internal.jdbc.StatementInterceptor statementInterceptor) default org.flywaydb.core.extensibility.MigrationType
getType()
void
Executes this migration.
-
Method Details
-
getVersion
MigrationVersion getVersion()- Returns:
- The version of the schema after the migration is complete.
null
for repeatable migrations.
-
getDescription
String getDescription()- Returns:
- The description of this migration for the migration history. Never
null
.
-
getChecksum
Integer getChecksum()- Returns:
- The checksum of this migration.
-
getResolvedMigration
default ResolvedMigration getResolvedMigration(Configuration config, org.flywaydb.core.internal.jdbc.StatementInterceptor statementInterceptor) -
canExecuteInTransaction
boolean canExecuteInTransaction()Whether the execution should take place inside a transaction. Almost all implementations should returntrue
. This however makes it possible to execute certain migrations outside a transaction. This is useful for databases like PostgreSQL and SQL Server where certain statement can only execute outside a transaction.- Returns:
true
if a transaction should be used (highly recommended), orfalse
if not.
-
migrate
Executes this migration. The execution will automatically take place within a transaction, when the underlying database supports it and the canExecuteInTransaction returnstrue
.- Parameters:
context
- The context relevant for this migration, containing things like the JDBC connection to use and the current Flyway configuration.- Throws:
Exception
- when the migration failed.
-
getType
default org.flywaydb.core.extensibility.MigrationType getType()
-