2

私は、現在 400k しかない、データベースを大量に使用する分散可能な Java アプリケーションを持っています。データベースクエリの構築を改善し、いくつかの特定のデータベースの方言をサポートする必要があります。

jOOQ は JAR にシェーディングする必要があり、シェーディングminimizeJar用の要素を使用している場合でも、最大 1.6MB まで膨らみます。

カスタム ビルドを実行したり、現在使用していない 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 と実装を手動で削除して、そこからすべての行タイプを削除することもできます。不要かもしれないもう 1 つのステートメント全体は、広範な API を持つ MERGE ステートメントです。次に、厳密には必要ないツール パッケージがあります。具体的には次のとおりです。

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

また、org.jooq.impl パッケージからいくつかのクラスを削除することもできます。クラス名は、何かが必要かどうかを判断するのに役立つように、かなり単純なものにする必要があります。

このような対策でどこまで到達できるかを見るのは興味深いでしょう。これは、Android ユーザーにも役立つ可能性があります。

于 2013-11-09T08:22:39.620 に答える