4

Java Webプロジェクトにjooqを使用したいのは、その仕様からはシンプルで優れたクエリビルダーのように見えますが、Javaの単純なクエリやプリペアドステートメントよりもパフォーマンスが向上するからです。

4

2 に答える 2

8

jOOQのボトルネックと一般的なパフォーマンスの問題をチェックする継続的な(未公開の)ベンチマークがあります。最近発見された問題の例はここで見ることができます:

https://github.com/jOOQ/jOOQ/issues/1625

Mikkoも述べたように、jOOQは、JDBCに直接渡される静的SQL文字列を打ち負かすことはできません。これは、常に次のオーバーヘッドが発生するためです。

  1. jOOQオブジェクトの構築
  2. SQLをレンダリングするためのjOOQオブジェクトのトラバース
  3. PreparedStatementそのSQLでを作成する
  4. バインド変数のjOOQオブジェクトをトラバースし、それらをバインドしますPreparedStatement

ご使用の環境でパフォーマンスが重要な場合は、クエリを実行するたびにjOOQにこれらの手順を実行させないことをお勧めします。代わりに、jOOQでSQLを1回レンダリングし、SQL文字列と、再利用可能なへの参照を自分でキャッシュしますPreparedStatement。ただし、H2などのインメモリデータベースを使用していない場合は、ベンチマークに示されているように、ここではマイクロ最適化について説明しています。クエリごとに1ミリ秒未満を取得することについて話しています。

于 2012-08-08T15:12:59.303 に答える
4

いいえ、パフォーマンスは向上しません。JOOQ自体はJDBCを介してデータベースと通信し(プリペアドステートメントを使用し)、キャッシュを含まないため、JDBCを介してクエリを直接実行するよりも高速になることはありません。

于 2012-08-08T09:44:32.127 に答える