Skip to main content

Spring Boot - Flyway Migrations

·440 words·3 mins
Spring Boot Database

Introduction
#

This guide explores how to use Flyway for managing database schema versioning and migration in a Spring Boot application. Flyway is a popular tool that facilitates the management of database changes as code, following a version-controlled approach.

Prerequisites
#

Before you begin with Flyway migrations in your Spring Boot project, make sure you have completed the following prerequisites:

  1. Initialize a Spring Boot project: Set up a new Spring Boot project or ensure you have an existing project ready to use.
  2. Configure a data source: This involves setting up the necessary dependencies, such as a JDBC driver, and providing the connection details for your data source in either pom.xml or build.gradle.

Setting up Flyway
#

To start using Flyway in your Spring Boot project, follow these steps:

  1. Add the Flyway dependency to your project’s build configuration file.

    Maven pom.xml:

    	<dependencies>
          ....
          <dependency>
             <groupId>org.flywaydb</groupId>
             <artifactId>flyway-core</artifactId>
          </dependency>
          ...
       </dependencies>
    

    Gradle build.gradle:

    dependencies {
       ...
       implementation 'org.flywaydb:flyway-core'
       ...
    }
    
  2. Create a db/migration directory in your project’s resources folder and add your SQL migration scripts with the desired version prefix.

    For example, a migration script could be named V1__create_users_table.sql and contain the following SQL code:

    CREATE TABLE users
    (
       id         BIGSERIAL PRIMARY KEY,
       first_name VARCHAR(255),
       last_name  VARCHAR(255)
    );
    

    Follow the V{version}__{description} format for naming your migration scripts.

Note: For detailed information on the naming conventions for SQL scripts, refer to the FlywayDB documentation on migrations.

Running Migrations
#

Flyway will automatically execute the migrations when you run your Spring Boot application.

It detects the migration scripts in the db/migration directory and applies them to the configured database.

Check the console logs for the migration status and any errors.

You can also verify the changes in the database. Additionally, Flyway creates a flyway_schema_history table that reflects the migration history.

Additional Flyway Features
#

Flyway offers several additional features and customizations:

  • Rollbacks migrations: Allows you to revert applied migrations.
  • Placeholders: You can use placeholders in your migration scripts to make them more dynamic.
  • Repeatable Migrations: Supports scripts that can be reapplied multiple times without changing their version.
  • Callbacks: Flyway supports callbacks at various stages of the migration process.

For more information, refer to the Flyway documentation.

Moreover, for Spring Boot-specific customizations related to Flyway, please refer to the Spring Boot documentation on data migration.

Conclusion
#

In this guide, we explored how to use Flyway for managing database migrations in a Spring Boot application. Flyway simplifies the process of versioning and applying database schema changes, making it an essential tool for database development. By following these concepts, you can ensure seamless database migrations in your own projects.

Credits
#

Thumbnail photo by NEOM on Unsplash