通过属性/yaml

io.ebean.Database 可以通过 application.yamlapplication.properties 等中的属性自动配置。

默认数据库名称为 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://localhost:5432/my_app

ebean.migration.run

通常,我们希望 Ebean 在启动时运行迁移,并且我们已将 ebean.migration.run 设置为 true

Postgres - ebean.dbSchema

通常对于 Postgres,当我们希望数据库表等位于该命名模式中而不是 public 模式中时,我们会将 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" 的数据库,我们会像下面这样配置第二个数据源

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 以编程方式创建 Database 实例。

// 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

我们可以将 ddl.generationddl.run 设置为 true,以针对内存 H2 或提供的数据库实例进行简单的测试(尤其是如果我们的应用程序是只读的)。

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 尤其可以用于以编程方式设置和初始化数据库以进行测试。

针对全功能目标数据库进行测试在测试和覆盖方面具有许多优势,我们在 docs / testing 中对此进行了讨论。

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