DBマイグレーション

Ebeanは、DBマイグレーションを生成し、それらを実行するためのサポートを組み込んでいます。

DBマイグレーションの生成

GenerateDbMigration (以下のコード) をプロジェクトに追加するには、ebeaninit を使用できることに注意してください。

src/test/java に以下のコードを追加してマイグレーションを生成します。

src/test/kotlin に以下のコードを追加してマイグレーションを生成します。

DBマイグレーションを生成するには、このmainメソッドを実行します。特定のプラットフォームのマイグレーションDDLは、モデルの変更(例: テーブルの列の追加など)に基づいて生成されます。

package main;

import io.ebean.annotation.Platform;
import io.ebean.dbmigration.DbMigration;
import java.io.IOException;

public class GenerateDbMigration {

  /**
   * Generate the DDL for the next DB migration.
   */
  public static void main(String[] args) throws IOException {

    DbMigration dbMigration = DbMigration.create();
    dbMigration.setPlatform(Platform.POSTGRES);

    dbMigration.generateMigration();
  }
}
package main

import io.ebean.annotation.Platform
import io.ebean.dbmigration.DbMigration

/**
 * Generate the DDL for the next DB migration.
 */
fun main(args : Array<!String>) {

  // requires jvmTarget 1.8
  val dbMigration = DbMigration.create()
  dbMigration.setPlatform(Platform.POSTGRES)

  dbMigration.generateMigration()
}
  

いくつかの作業を完了し、リリースの準備ができたと判断した場合に、手動で実行します。

生成を実行すると、Ebeanがオフラインモードで起動し、モデルのDIFFを実行し、マイグレーションDDLスクリプトを生成します。

マイグレーションの実行

組み込みのマイグレーションランナーを使用してマイグレーションを実行するには、ebean.migration.run をtrueに設定します。

application.yamlで
## run migrations when the Ebean starts
ebean:
  migration:
    run: true

ebean.migration.run=true が設定されている場合、Ebeanが起動するとマイグレーションを確認し、実行する必要があるマイグレーションを実行します。マイグレーションランナーは、デフォルトでdb_migrationという名前のテーブルを作成し、実行されたマイグレーションに関するメタデータを保持し、マイグレーションが正常に実行されるとこのテーブルに挿入します。