プロパティ / yaml を介して
application.yaml
、application.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.run
を true
に設定します。
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 を参照してください。
プログラムでデータベースを作成する
DatabaseFactory
と DatabaseConfig
を使用して、データベースインスタンスをプログラムで作成できます。
// 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.generation と ddl.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-test は src/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.platform
を postgres
に変更するだけです。
詳細は docs / testing を参照してください。