代码生成和版本控制
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
使用 jOOQ 的代码生成功能时,您需要策略性地决定是否将生成的代码视为:
- 代码库的一部分
- 派生工件
在本节中,我们将看到这两种方法都有其优点,并且没有一种方法明显更好。
代码库的一部分
当您将生成的代码视为代码库的一部分时,您将希望:
- 在版本控制系统中检入生成的源代码
- 使用手动源代码生成
- 甚至可能使用部分源代码生成
当您的 Java 开发人员不能完全控制或没有完全访问您的数据库模式,或者如果您有很多开发人员同时处理同一个数据库模式(该模式一直在变化)时,这种方法特别有用。能够跟踪数据库更改的副作用也很有用,因为当您想要分析模式的历史记录时,可以考虑您检入的数据库模式。
使用这种方法,您还可以跟踪 jOOQ 代码生成器行为的更改,例如,在升级 jOOQ 时,或在修改代码生成配置时。
这种方法的缺点是更容易出错,因为实际模式可能与生成的模式失去同步。
派生工件
当您将生成的代码视为派生工件时,您将希望:
- 仅检入实际的 DDL(例如,通过 Flyway 控制)
- 每次模式更改时都重新生成 jOOQ 代码
- 在每台机器上(包括持续集成)重新生成 jOOQ 代码
当您有一个较小的数据库模式,完全由您的 Java 开发人员控制,并且他们希望从能够重新生成构建的每个步骤中的所有派生工件的更高质量中获益时,这种方法特别有用。
这种方法的缺点是,当您的数据库的某些部分暂时不可用时,构建可能会在完全可以接受的情况下中断。
务实的组合
在某些情况下,您可能希望选择一种务实的组合,其中您只将生成代码的某些部分置于版本控制之下。例如,您可能希望版本控制您的 POJO,但不控制您的表/记录。这可以通过多种方式实现
- 您可以使用生成器策略将您的 POJO 重新定位到不同的包,从而使用例如
.gitignore
更容易地排除一个或另一个工件 - 您可以运行代码生成器两次,一次仅用于 POJO,另一次用于其余部分。
反馈
您对此页面有任何反馈吗? 我们很乐意听到它!