JOOQ maven codegen和不同数据库在构建时和运行时的使用

JOOQ maven codegen和不同数据库在构建时和运行时的使用,jooq,jooq-codegen-maven,Jooq,Jooq Codegen Maven,假设我有以下用例: 我想让我的应用程序运行在PostgreSQL上 我已经配置了jooq codegen maven插件来使用H2 这是因为我不想我的构建依赖于总是运行的postgres 问题: 针对H2生成的代码是否与postgres兼容 这个用例有意义吗 如果没有,如何正确地解决它(减少对运行DB实例的依赖)? 我是否可以(以某种方式)将testcontainers与生成过程(或类似概念)结合使用 多谢各位 伊沃斯 生成的H2代码是否与postgres兼容 可以,只要您不使用

假设我有以下用例:

  • 我想让我的应用程序运行在PostgreSQL上
  • 我已经配置了
    jooq codegen maven
    插件来使用H2
    • 这是因为我不想我的构建依赖于总是运行的postgres
问题:

  • 针对H2生成的代码是否与postgres兼容
  • 这个用例有意义吗
  • 如果没有,如何正确地解决它(减少对运行DB实例的依赖)?
    • 我是否可以(以某种方式)将testcontainers与生成过程(或类似概念)结合使用
  • 多谢各位

    伊沃斯

    生成的H2代码是否与postgres兼容

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

    这个用例有意义吗

    当然,但我会先尝试其他事情,包括在中运行PostgreSQL实例。在不久的将来,jOOQ可能会支持开箱即用:


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

    谢谢您的回答。我想,和运行数据库实例的生成(解析器有趣、方言语法不明确等)相比,DDL解析可能会有一些小故障,对吗?这将由testcontainers support解决。@bedla.捷克人:好吧,一切都是权衡。你想要大多数功能?使用本机PostgreSQL的代价是代码生成速度稍慢。你想要更快的代码生成速度吗?使用
    DDLDatabase
    ,代价是大大减少可用的PostgreSQL特定功能。