MariaDB

12.3.6以降、MariaDBには独自プラットフォームが存在し、それをサポートするSQL2012履歴サポートとDDL生成が利用できます。

MariaDB JDBCドライバ - useLegacyDatetimeCode

MariaDB JDBCドライバが使用されuseLegacyDatetimeCode=falseが設定されることが想定されています。これにより、JDBCドライバはデータベースサーバのタイムゾーンに従います。ebean-testによりuseLegacyDatetimeCodeパラメータは自動的に設定されますが、それ以外は接続プールでパラメータが設定されている必要があります。

## example manually setting useLegacyDatetimeCode in properties file
datasource.db.username=my_app
datasource.db.password=test
datasource.db.url=jdbc:mariadb://:4306/unit?useLegacyDatetimeCode=false

MariaDB JDBCドライバが使用されることが想定されます。

<dependency>
  <groupId>org.mariadb.jdbc</groupId>
  <artifactId>mariadb-java-client</artifactId>
  <version>2.6.0</version>
</dependency>

テスト

MariaDB docker testコンテナに対してテストするには、src/test/resources/application-test.yamlplatformmariadbに設定します。

application-test.yamlがまだ存在しない場合はドキュメント/テストを参照してください。

ebean:
  test:
    platform: mariadb
    ddlMode: dropCreate # none | dropCreate | migrations | create
    dbName: my_app

上記のデフォルトは次のようになります

ユーザー名{dbName}
パスワードtest
ポート4306
URLjdbc:mariadb://:{port}/{dbName}?useLegacyDatetimeCode=false
イメージmariadb:{version:10}

 

 

ebean-mariadb依存関係

MariaDB固有のプラットフォームコードのみ取り込む場合は、io.ebean:ebeanではなくio.ebean:ebean-mariadb依存関係を使用できます。io.ebean:ebeanに依存するとすべてのプラットフォームが取り込まれます。

タイプ

UUID

UUIDは本来のMariaDBタイプではなく、BINARY(16)またはVARCHAR(36)にマッピングできます。

JSON

@DbJsonを使用してコンテンツをマップできます。

履歴サポート

MariaDBには本来のSQL2011履歴サポートがあり、Ebeanは@Historyで注釈されたエンティティ上でこれを有効化および使用するためのDDLを生成します。

Dockerコンテナ

ebean-test-dockerを使用して、MariaDB dockerコンテナをプログラムで開始できます。

package main;

import io.ebean.docker.commands.MariaDBContainer;

public class Main {

  public static void main(String[] args) {

    MariaDBContainer container = MariaDBContainer.newBuilder("10.5")
      .dbName("unit")
      .password("unit")
      .build();

    container.start();
  }
}