プロパティ / yaml を介して

application.yamlapplication.properties などで properties 経由で、io.ebean.Database を自動的に設定できます。

デフォルトのデータベース名は db です。したがって、最小限の設定は次のようになります。

H2 - メモリ内

## H2 setup - In memory
datasource:
  db:
    username: sa
    password: sa
    url: jdbc:h2:mem:myapp

Postgres

datasource:
  db:
    username: my_app
    password: my_password
    url: jdbc:postgresql://:5432/my_app

ebean.migration.run

通常、スタートアップ時に Ebean にマイグレーションを実行してもらいたいため、ebean.migration.runtrue に設定します。

Postgres - ebean.dbSchema

通常、データベーステーブルなどを public スキーマではなく指定されたスキーマに配置したい場合は、Postgres の ebean.dbSchema をデータベースのユーザー名に一致するように設定します。

一般的な Postgres の典型的な構成例

ebean:
  dbSchema: my_app  # use this schema rather than public
  migration:
    run: true       # run database migrations on startup

datasource:
  db:
    username: my_app
    password: ${myPassword}
    url: jdbc:postgresql://${myDatabaseHost}:5432/my_app

  ## Expects system properties to be set for:
  ## myPassword and myDatabaseHost

複数のデータベース

複数のデータベースを使用する場合は、複数のデータソース設定を行います。非デフォルトデータベースには名前があります。たとえば、"other" という 2 番目のデータベースがある場合は、次のように 2 番目のデータソースを設定します。

ebean:
  dbSchema: my_app  # use this schema rather than public
  migration:
    run: true       # run database migrations on startup

datasource:
  db:
    username: my_app
    password: ${myPassword2}
    url: jdbc:postgresql://${myDatabaseHost2}:5432/my_app

  other:
    username: other_username
    password: ${otherPassword}
    url: jdbc:postgresql://${otherDatabaseHost}:5432/other_dbname

名前で「other」データベースインスタンスを取得できます。

// obtain "other" database by its name
Database otherDatabase = DB.byName("other");
  
// obtain "other" database by its name
val otherDatabase = DB.byName("other");
  

複数データベースのより詳細な使用方法については、ドキュメント / 複数データベース@DbName、Model、Finder を参照してください。

プログラムでデータベースを作成する

DatabaseFactoryDatabaseConfig を使用して、データベースインスタンスをプログラムで作成できます。

// datasource
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUsername("sa");
dataSourceConfig.setPassword("");
dataSourceConfig.setUrl("jdbc:h2:mem:myapp;");


// configuration ...
DatabaseConfig config = new DatabaseConfig();
config.setDataSourceConfig(dataSourceConfig);
...

// create database instance
Database database = DatabaseFactory.create(config);
  
// datasource
val dataSourceConfig = new DataSourceConfig()
dataSourceConfig.setUsername("sa")
dataSourceConfig.setPassword("")
dataSourceConfig.setUrl("jdbc:h2:mem:myapp;")


// configuration ...
val config = new DatabaseConfig();
config.setDataSourceConfig(dataSourceConfig)
...

// create database instance
val database = DatabaseFactory.create(config)
  

ddl.generation を使用したテスト

メモリ内の H2 または提供されたデータベースインスタンスに対して簡単なテストを行うには、ddl.generationddl.run を true に設定できます (特にアプリケーションが読み取り専用の場合)。

ebean:
  ddl:
    generate: true
    run: true
#   initSql: test-init.sql
#   seedSql: test-seed.sql

datasource:
  db:
    username: sa
    password: sa
    url: jdbc:h2:mem:myapp

ebean-test を使用したテスト

ebean-test は、ターゲットデータベース (Postgres、MySql、MariaDB、SQLServer、Oracle ...) に対するテストに役立てるために構築されました。特に Docker を使用して、テスト目的でデータベースをプログラムでセットアップして初期化できます。

ドキュメント / テストで説明されているように、完全な機能を備えたターゲットデータベースに対してテストを行うと、テストとカバレッジの面で多くの利点が得られます。

ebean-testsrc/test/resources/application-test.yaml の構成を読み取ります。以下の例を参照してください。

ebean:
  test:
    platform: postgres # h2, postgres, mysql, ...
    ddlMode: dropCreate # none | dropCreate | migration
    dbName: my_app

ebean-test は Ebean の起動時に接続され、ebean.test.platform に基づいてデータソースを構成し、ebean.test.ddlMode に基づいて DDL の生成と実行を構成します(必要に応じて docker コンテナーを使用するときは、docker コンテナーの起動、セットアップ、待機も行います)。

テストには ebean-test を使用することをお勧めします。テストに使用するデータベースを簡単に変更できるためです。たとえば、H2 に対してテストを行うのを Postgres docker コンテナーに対してテストを行うのに変更するには、ebean.test.platformpostgres に変更するだけです。

詳細は docs / testing を参照してください。