是否有 jOOQ 工具来验证生成的定义是否仍然正确?
Is there a jOOQ tool to verify generated definitions are still correct?
我正在使用 jOOQ 基于 Liquibase 维护的架构生成的 类。我正在寻找一种方法来确保 jOOQ 类 与实际数据库保持一致。首选方法是在创建拉取请求时通过我们的 CI 工具创建一个可以 运行 的测试。
是否有工具可以验证 jOOQ 生成的定义是否仍然正确?
涉及构建设置的两种明显方法是:
- 签入生成的源(当它们不是最新的时获取差异)。另请参阅有关 code generation and version control.
的手册部分
- 在您的构建中包含 Liquibase 迁移和 jOOQ 代码生成。这样,生成的源 和 数据库 总是 与您的 Liquibase 迁移脚本中定义的内容保持同步。您还可以使用
LiquibaseDatabase
直接基于您的 Liquibase 文件生成代码,如果您没有做任何花哨的、特定于供应商的事情。
使用程序化 jOOQ API 的一种不太明显的方法是使用 Meta.migrateTo(Meta)
:
比较 Meta
的两个版本
// This corresponds to the meta data from your live connection
Meta m1 = ctx.meta();
// This corresponds to the meta data from your generated catalog (or schema, table, etc)
Meta m2 = ctx.meta(catalog);
// This is a generated migration script between the two versions, should be empty
Queries queries = m1.migrateTo(m2);
该方法可能会奏效,但它有很多警告,从 jOOQ 3.14、3.15 开始,这些警告仍在修复中。可以在这里看到正在进行的工作:https://github.com/jOOQ/jOOQ/projects/1,非常欢迎错误报告!
我正在使用 jOOQ 基于 Liquibase 维护的架构生成的 类。我正在寻找一种方法来确保 jOOQ 类 与实际数据库保持一致。首选方法是在创建拉取请求时通过我们的 CI 工具创建一个可以 运行 的测试。
是否有工具可以验证 jOOQ 生成的定义是否仍然正确?
涉及构建设置的两种明显方法是:
- 签入生成的源(当它们不是最新的时获取差异)。另请参阅有关 code generation and version control. 的手册部分
- 在您的构建中包含 Liquibase 迁移和 jOOQ 代码生成。这样,生成的源 和 数据库 总是 与您的 Liquibase 迁移脚本中定义的内容保持同步。您还可以使用
LiquibaseDatabase
直接基于您的 Liquibase 文件生成代码,如果您没有做任何花哨的、特定于供应商的事情。
使用程序化 jOOQ API 的一种不太明显的方法是使用 Meta.migrateTo(Meta)
:
Meta
的两个版本
// This corresponds to the meta data from your live connection
Meta m1 = ctx.meta();
// This corresponds to the meta data from your generated catalog (or schema, table, etc)
Meta m2 = ctx.meta(catalog);
// This is a generated migration script between the two versions, should be empty
Queries queries = m1.migrateTo(m2);
该方法可能会奏效,但它有很多警告,从 jOOQ 3.14、3.15 开始,这些警告仍在修复中。可以在这里看到正在进行的工作:https://github.com/jOOQ/jOOQ/projects/1,非常欢迎错误报告!