jOOQ - 比较 JDBC 和 jOOQ
在 Java 中,有多种方式可以无缝地与数据库交互。开发人员可以根据应用程序或项目的功能和复杂性从 JDBC、JPA、jOOQ 和许多其他类似技术中进行选择。在本教程中,我们将比较 JDBC 和 jOOQ,以找出两者之间的相似之处和不同之处。
什么是 JDBC?
JDBC 的全称是 Java Database Connectivity。它由 Sun Microsystems 于 1997 年开发。它是一个用于连接和执行数据库查询的 Java API。 JDBC 可以与任何数据库一起使用,包括 Oracle、MySQL、MS Access、PostgreSQL 等。
JDBC 为下面提到的每个任务提供单独的 API −
- 连接到数据库。
- 创建 SQL 语句。
- 在数据库中执行 SQL 查询。
- 查看和修改结果记录。
什么是 jOOQ?
jOOQ 的全称是 Java 面向对象查询。它由 Lukas Eder 于 2010 年开发。jOOQ 的主要用途是用 Java 编写类型安全的 SQL 查询。它借助其代码生成器从数据库表和视图生成 Java 类。与 JDBC 一样,它还支持多种数据库,例如 MySQL、PostgreSQL、Oracle 等。
JDBC 和 jOOQ 之间的相似之处
以下是 JDBC 和 jOOQ 之间的相似之处列表 −
- JDBC 和 jOOQ 提供了在非结果查询中返回受影响记录数量的机制。在 JDBC 中,这是通过 Statement.executeUpdate() 方法实现的,而在 jOOQ 中,Query.execute() 方法具有相同的用途。
- 从数据库检索数据时,这两个 API 都会从结果查询中返回可滚动的结果集类型。 JDBC 使用 java.sql.ResultSet,而 jOOQ 使用 org.jooq.Result 来浏览查询返回的数据。
- 它们支持所有主流数据库,包括 Oracle、MySQL、MS Access、PostgreSQL 等。
JDBC 和 jOOQ 之间的区别
下表显示了 JDBC 与 jOOQ 的不同之处 −
| JDBC | jOOQ |
|---|---|
JDBC 使用已检查的 SQLException。 |
jOOQ 将异常包装在未检查的 DataAccessException 中。 |
它需要手动关闭使用的资源。 |
使用后默认关闭资源。 |
JDBC 使用基于 1 的 API。 |
jOOQ 使用基于 0 的索引作为其 API。 |
对于返回结果的查询和不返回结果的查询,它使用相同的 API。 |
它区分两者。 |
JDBC 没有延迟获取功能。 |
为了更好地控制一次应将多少条记录提取到内存中,jOOQ 使用延迟获取。 |

