DDL 生成

Ebean 可以生成并执行 CREATE ALLDROP ALL DDL 脚本,用于创建所有表。这用于测试目的。

在运行测试或测试套件时,数据库会从头开始完全创建

使用 ebean-test

控制和运行测试 DDL 的最佳方法是使用 ebean-testddlMode。使用 dropCreate 意味着会生成并运行用于创建所有和删除所有内容的 DDL。

在 application-test.yml 中
ebean:
  test:
    platform: h2 # h2, postgres, mysql, oracle, sqlserver
    ddlMode: dropCreate # none | dropCreate | migrations | create
    dbName: myapp

使用属性

如果我们不想使用 ebean-test,我们可以在 application-test.yml(位于 src/test/resources 中)中将 ebean.ddl.generateebean.ddl.run 属性都设置为 true,这样一来,只有在运行测试时才会生成并执行 CREATE ALL DDL。

在 application-test.yml 中
ebean:
  ddl:
    generate: true
    run: true
或 application-test.properties
ebean.ddl.generate=true
ebean.ddl.run=true

db-create-all.sql

生成 DDL 时,会生成 db-create-all.sqldb-drop-all.sql,并将其放入 maven target 或 gradle build 目录中。

在运行测试时,Ebean 会自动重新生成这些 ddl 脚本文件,并在运行测试之前执行它们。这实际上是在运行测试之前重新创建数据库。

初始 DDL

我们还可以通过 initSql 属性指定在运行“创建所有”DDL 之前执行的 DDL。

ebean.ddl.initSql=testInitialDdl.sql

种子 DDL

我们还可以通过 seedSql 属性指定在运行“创建所有”DDL 之后执行的 DDL,我们通常使用它来填充数据库。

ebean.ddl.seedSql=testSeedData.sql

 

与数据库迁移相比

数据库迁移 不同之处在于,它会为模型的更改生成 DIFF DDL 脚本,并且这些 DIFF DDL 脚本通常可以在 Ebean 启动时应用到目标数据库中。