【问题标题】:JOOQ maven codegen and use of different database for buildtime and runtimeJOOQ maven 代码生成和使用不同的数据库进行构建时和运行时
【发布时间】:2020-10-14 11:14:14
【问题描述】:

假设我有以下用例:

  • 我希望我的应用程序针对 PostgreSQL 运行
  • 我已将jooq-codegen-maven 插件配置为使用H2
    • 这是因为我不希望我的构建依赖于始终运行的 postgres

问题:

  1. 针对 H2 生成的代码是否与使用 postgres 兼容?
  2. 这个用例有意义吗?
  3. 如果不是,如何正确解决(减少对运行数据库实例的依赖)?
    • 我可以(以某种方式)使用带有生成过程(或一些类似概念)的测试容器

谢谢

伊沃斯

【问题讨论】:

    标签: jooq jooq-codegen-maven


    【解决方案1】:

    针对 H2 生成的代码是否与使用 postgres 兼容?

    可以,只要您不使用任何供应商特定的功能

    这个用例有意义吗?

    当然,但我会先尝试其他方法,包括在 testcontainers 中运行 PostgreSQL 实例。 jOOQ 将来可能会支持开箱即用:https://github.com/jOOQ/jOOQ/issues/6551。同时,这里有一个手动设置的例子,并不难:https://github.com/jOOQ/jOOQ/tree/main/jOOQ-examples/jOOQ-testcontainers-example

    此外,您可以使用DDLDatabase,而不是滚动您自己的 PostgreSQL/H2 设置,它从 jOOQ 3.13 开始将 PostgreSQL DDL 转换为 H2,并且在未来,将简单地解释 DDL,以支持更多供应商具体的东西。

    【讨论】:

    • 感谢您的回答。我想 DDL 解析与从运行的数据库实例生成(解析器有趣、模棱两可的方言语法等)相比可能会有一些小故障,对吧?这将通过 testcontainers 支持来解决。
    • @bedla.czech:嗯,一切都是权衡。您想要大多数功能?使用本机 PostgreSQL,代价是代码生成速度稍慢。您想要更快的代码生成速度吗?使用DDLDatabase 的代价是显着减少可用的 PostgreSQL 特定功能。
    猜你喜欢
    • 2016-06-12
    • 2022-01-12
    • 2016-09-20
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 2014-03-06
    相关资源
    最近更新 更多