可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

jOOQ 和 JDBC 之间的比较

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

与 JDBC 的相似之处

即使有 两种通用的 Query 类型,JDBC 和 jOOQ 之间仍然有很多相似之处。仅举几例

与 JDBC 的区别

以下列出 JDBC 和 jOOQ 之间一些最重要的区别

  • Query vs. ResultQuery:JDBC 没有正式区分可以返回结果的查询和不能返回结果的查询。两者使用相同的 API。这大大降低了 获取便捷方法 的可能性
  • 异常处理:虽然 SQL 使用检查型 java.sql.SQLException,但 jOOQ 将所有异常都包装在未经检查的 org.jooq.exception.DataAccessException
  • org.jooq.Result:与 JDBC 对应类型不同,此类型实现了 java.util.List 并完全加载到 Java 内存中,从而尽可能早地释放资源。就像语句一样,这意味着用户不必处理“奇怪”的内部结果集状态。
  • org.jooq.Cursor:如果你想更精细地控制一次性获取到内存中的记录数,你仍然可以使用 jOOQ 的 延迟获取 功能
  • 语句类型:jOOQ 没有正式区分静态语句和预处理语句。默认情况下,所有语句在 jOOQ 中都是预处理语句(在内部)。将语句作为静态语句执行只需使用 自定义设置标志
  • 关闭语句:即使 JDBC 资源已被使用,JDBC 仍然会保持打开状态。使用 JDBC,安全地关闭资源有很多冗余操作。在 jOOQ 中,资源在消费后默认关闭。如果你想在消费后保持打开状态,你必须明确说明。
  • JDBC 标志:JDBC 执行标志和模式不会被修改。可以在 Query 上流畅地设置它们
  • 基于零的 API vs 基于一的 API:JDBC 是基于一的 API,jOOQ 是基于零的 API。虽然这在直觉上是有意义的(从 Java 的角度来看,JDBC 是不太直观的 API),但在某些情况下可能会导致混淆。

反馈

你对此页面有任何反馈吗? 我们很乐意听到你的意见!

The jOOQ Logo