4

我想将 jooq 用于我的 java web 项目,因为从它的规范来看,它似乎简单而好的查询构建器,但它是否比 java 中的简单查询或准备好的语句有任何性能提升。

4

2 回答 2

8

有正在进行的(未发布的)基准测试来检查 jOOQ 中的瓶颈和一般性能问题。可以在此处查看最近发现的问题的示例:

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

正如Mikko 所说,jOOQ 无法击败直接传递给 JDBC 的静态 SQL 字符串,因为您将始终有以下开销:

  1. 构造 jOOQ 对象
  2. 遍历 jOOQ 对象以呈现 SQL
  3. PreparedStatement使用该 SQL创建一个
  4. 遍历 jOOQ 对象以查找绑定变量,将它们绑定到PreparedStatement

如果性能在您的环境中至关重要,我建议您不要让 jOOQ 为每个查询执行执行这些步骤。相反,让 jOOQ 渲染一次 SQL 并自己缓存 SQL 字符串,以及对可重用PreparedStatement. 但是,如果您不使用内存数据库,例如 H2,我们在这里讨论的是微优化,如基准所示。我们谈论的是每次查询获得 < 1 毫秒。

于 2012-08-08T15:12:59.303 回答
4

不,它不提供性能增益。JOOQ 本身通过 JDBC 与数据库通信(并使用准备好的语句)并且不包含缓存,因此它根本无法比直接通过 JDBC 执行查询更快。

于 2012-08-08T09:44:32.127 回答