使用JOOQ

时间:2015-07-14 00:54:01

标签: java jooq

我的数据库架构中有一个表,其中包含我正在构建的应用程序的配置信息。我想根据表的内容生成一些枚举。我目前正在构建脚本中使用JOOQ来从同一个数据库生成其他标准JOOQ类,并希望我可以通过JOOQ获得这个新功能。

例如,如果表包含以下数据

Product        Component    PresentationOrder
HydroProduct   Boat         1
HydroProduct   Canoe        2
HyrdoProduct   Ship         3
LandProduct    Car          1
LandProduct    Bike         2

然后我想要生成两个枚举

hydroProduct.Components { Boat, Canoe, Ship; }

landProduct.Components {Car, Bike; }

其中hydroProduct和landProduct是包,枚举都称为组件。

精确的细节可供争夺(例如,我可以使用不同的命名约定,因此欢迎任何建议),但是主体(一个表中的两个枚举,基于其中的数据)至少是对于这个问题,我需要的东西。

阅读完JOOQ文档后,我发现生成Enums曾经是JOOQ的一部分,然后被删除。我无法看到在JOOQ中做我想要的“明显”方式,但它是一个非常棒的库,所以我猜可能有一个。

修改

一些评论者质疑整体方法,据我所知。我想避免那种谈话 - 我基本上不可能在这个论坛上讨论那种级别的设计。这种方法(基于DDL和SQL的代码生成)在我的组织内经过了很好的测试,并且进行了大量的设计审查。

仅供记录,这里是管道的概述。我把它放进去是因为我感谢人们花时间考虑我原来的问题,并且我想清楚地说明这个问题是如何适合我们整个开发系统的。

Project One包含一些引导类,一些DDL和一些包含整个系统使用的数据常量的SQL脚本。它的输出包括(除其他东西),一些.jar文件包含生成的类的编译版本。这些基本上包括我们系统其余部分用于通信的核心商定词汇。

Project Two拥有java源代码,它使用了从项目一中生成的各种人工制品。在项目二被编译之前,可以假设已经生成了来自项目一的人工制品。因此,例如,可以在编译时在项目二中使用从项目一中保存的数据生成的枚举。

我们的构建脚本构建项目一,并使输出可用于项目二。这包括生成Eclipse项目文件,以便项目二的用户可以为项目的任何分支签出,构建和打开eclipse,并且“只是工作”。

还有其他项目(包括不同语言,例如Javascript)也使用项目1生成的文物。

这种方法的主要好处是,当项目一中的数据发生变化,而项目一中的类和枚举的定义因此发生变化时,项目二反映了这种变化的编译时错误,而不是运行时错误。这在实践中的好处是绝对巨大的。有一个设置成本,是的,但在我们的经验中,像JOOQ这样的工具(我们用它来生成项目1的输出)使我们比以前更加富有成效。

特别是我们提供桌面,浏览器和J2EE组件的情况,他们都需要一起交谈。

0 个答案:

没有答案