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.yaml
でplatformをmariadb
に設定します。
application-test.yamlがまだ存在しない場合はドキュメント/テストを参照してください。
ebean:
test:
platform: mariadb
ddlMode: dropCreate # none | dropCreate | migrations | create
dbName: my_app
上記のデフォルトは次のようになります
ユーザー名 | {dbName} |
---|---|
パスワード | test |
ポート | 4306 |
URL | jdbc: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();
}
}