Skip to content

ebean-orm/ebean-migration

Repository files navigation

Build Maven Central : ebean License JDK EA native image build

Ebean Migration

DB Migration runner (similar to FlywayDB) which can be used standalone or with Ebean (to run DB Migrations on EbeanServer start)

Example use

To use firstly create a MigrationConfig and set properties, then create and run MigrationRunner.

    MigrationConfig config = new MigrationConfig();
    config.setDbUsername("sa");
    config.setDbPassword("");
    config.setDbUrl("jdbc:h2:mem:db1");

    // or load from Properties
    Properties properties = ...
    config.load(properties);

    // run it ...
    MigrationRunner runner = new MigrationRunner(config);
    runner.run();

Then create a run a MigrationRunner. When running the database connection can either be:

  • Passing a Connection explicitly
  • Creating a connection (by specifying JDBC Driver and URL on MigrationConfig)
  • Passing a DataSource (MigrationConfig dbUsername and dbPassword used)

Run with explicit connection

    Connection connection = ...;

    MigrationRunner runner = new MigrationRunner(config);

    // pass explicit connection
    runner.run(connection);

Run with explicit DataSource

    DataSource dataSource = ...;

    MigrationRunner runner = new MigrationRunner(config);

    // pass a dataSource
    runner.run(dataSource);

Run creating a Connection (via MigrationConfig)

    MigrationRunner runner = new MigrationRunner(config);
    runner.run();

Notes:

MigrationConfig migrationPath is the root path (classpath or filesystem) where the migration scripts are searched for.

    MigrationConfig config = createMigrationConfig();

    // load .sql migration resources from a file system location
    config.setMigrationPath("filesystem:my-directory/dbmigration");

DB Migration runner follows the FlywayDB conventions and supports running "Versioned" migrations and "Repeatable" migrations.

dbmigration
dbmigration/1.1__initial.sql
dbmigration/1.2__add_some_stuff.sql
dbmigration/R__create_views_repeatable.sql

"Repeatable migrations" start with R__ and execute if they have not been or if their content has changed (using a Md5 checksum).

"Version migrations" start with V (or not) and have a version number (1.2 etc) followed by double underscore __ and then a comment.

Rebasing migration history

Set ebean.migration.rebaseMigrationHistory=true for a one-time rebase after compacting existing migrations. The runner keeps its internal bootstrap row, deletes all other migration history, and records every migration currently found under migrationPath with its normal checksum without executing any migration SQL.

This is destructive and must only be used when the existing database schema is known to match the replacement migrations. dbinit resources are not included. Remove the setting after the rebase; otherwise future migrations will be recorded without being executed.

About

DB Migration runner (similar to Flyway) which can be used standalone or with Ebean (run migrations on EbeanServer start)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages