SQL Server

SQL Serverではsqlserver17を使用するか、既定の古いものを使用するかを決定する必要があります。

sqlserver17

sqlserver17を使用するように設定するには、ebean.databasePlatformName>レベルまたはebean.test.sqlserver.databasePlatformName>レベルでdatabasePlatformNameをsqlserver17に設定する必要があります。

ebean:
  databasePlatformName: sqlserver17  ## only using sql server
  test:
    platform: sqlserver # h2, postgres, mysql, oracle, sqlserver
    ddlMode: dropCreate # none | dropCreate | migrations
    dbName: test
    sqlserver:
      #collation: SQL_Latin1_General_CP1_CS_AS  ## use an explicit collation
      #collation: default                       ## use the sql server default

複数のデータベースプラットフォームに対してテストを行う場合は、次のような例に従って、sqlserverの下にdatabasePlatformName: sqlserver17を配置します。

ebean:
  test:
    platform: sqlserver # h2, postgres, mysql, oracle, sqlserver
    ddlMode: dropCreate # none | dropCreate | migrations | create
    dbName: test

    sqlserver:
      databasePlatformName: sqlserver17         ## put here when testing multiple platforms
      #collation: SQL_Latin1_General_CP1_CS_AS  ## use an explicit collation
      #collation: default                       ## use the sql server default

上記では、次の既定値が使用されます。

ユーザー名{databaseName}
パスワードSqlS3rv#r
ポート1433
URLjdbc:sqlserver://:{port};databaseName={databaseName}
ドライバcom.microsoft.sqlserver.jdbc.SQLServerDriver
イメージmicrosoft/mssql-server-linux:{version}

ebean-sqlserverの依存関係

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

Dockerコンテナ

DockerコンテナバージョンのSqlServerをプログラムで開始できます。

以下では、ebean-testにすでに付属しているebean-test-dockerの依存関係を使用しています。ebean-testに依存していない場合は、io.ebean:ebean-test-docker:5.0を依存関係として追加します。

package main;

import io.ebean.docker.commands.SqlServerContainer;

public class Main {

  public static void main(String[] args) {

    SqlServerContainer container = SqlServerContainer.newBuilder("2019-CU15-ubuntu-20.04")
      .dbName("my_app")
      .collation("SQL_Latin1_General_CP1_CS_AS")
      // .containerName("ut_sqlserver")
      // .port(1433)
      .build();

    container.start();
  }
}