2

我有一个数据库繁重的可分发 Java 应用程序,目前只有 400k。我们需要改进的数据库查询构建以及对一些特定数据库方言的支持。

jOOQ 必须在我们的 JAR 中进行着色,并且它会将其膨胀到 1.6MB,即使使用minimizeJar元素进行着色也是如此。

有没有办法可以进行自定义构建或删除我们现在没有用的 jOOQ 组件?方言,非插入/选择/删除查询类,其他我们不需要的功能?

我考虑过尝试识别我们正在使用的每个导入类并将 maven 设置为仅对它们进行遮蔽,但我还需要处理 jOOQ 在内部使用的类,我不知道 jOOQ 对所有内容的依赖程度。

如果我能把它减少到几百千,我会被卖掉继续使用它。

4

1 回答 1

0

jOOQ 是根据此处解释的原则实现的特定领域语言:http: //blog.jooq.org/2012/01/05/the-java-fluent-api-designer-crash-course/

这意味着 DSL 规范中的每个“生产”或“主要”都会生成一个 Java 接口,其中包含这可能在类加载器中生成的所有开销。此外,从 jOOQ 3.0 开始,引入了 1-22 级的记录和行类型(例如 org.jooq.Row1、org.jooq.Row2、... org.jooq.Row22)。所有这些元素都是 API 的一部分,可能无法进一步剥离。

当然,您可以尝试手动剥离 jOOQ API 和实现,从中删除所有行类型。您可能不需要的另一个完整语句是 MERGE 语句,它也有一个广泛的 API。然后是工具包,它们不是严格需要的,特别是:

  • org.jooq.tools.csv
  • org.jooq.tools.json
  • org.jooq.types
  • org.jooq.util.[方言]

此外,您可以尝试从 org.jooq.impl 包中删除几个类。类名应该相当直接,以帮助您确定是否需要某些东西。

看看你用这些措施能走多远会很有趣。这也可能对 Android 用户有用。

于 2013-11-09T08:22:39.620 回答