DDL 生成
Ebean 可以生成并执行 CREATE ALL
和 DROP ALL
DDL 脚本,用于创建所有表。这用于测试目的。
在运行测试或测试套件时,数据库会从头开始完全创建
使用 ebean-test
控制和运行测试 DDL 的最佳方法是使用 ebean-test 和 ddlMode。使用 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.generate
和 ebean.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.sql
和 db-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 启动时应用到目标数据库中。