ebean-orm / ebean-migration

DB Migration runner (similar to Flyway) which can be used standalone or with Ebean (run migrations on EbeanServer start)
Apache License 2.0
9 stars 5 forks source link
database database-migrations flyway java

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:

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.