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

Connection与DataSource

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

与 JDBC 连接交互

虽然您可以使用 jOOQ 仅用于 SQL 构建,但您也可以针对 JDBC java.sql.Connection 运行查询。 在内部,jOOQ 从这样的连接创建 java.sql.Statementjava.sql.PreparedStatement 对象,以便执行语句。 正常操作模式是提供一个带有 JDBC 连接的 配置,您将自己控制其生命周期。 这意味着 jOOQ 不会主动关闭连接,回滚或提交事务。

请注意,在这种情况下,jOOQ 将在内部使用 org.jooq.impl.DefaultConnectionProvider,如果您愿意,可以直接引用它。 DefaultConnectionProvider 公开了各种事务控制方法,例如 commit(),rollback() 等。

与 JDBC 数据源交互

但是,如果您处于 Java EE 或 Spring 上下文中,您可能希望使用 javax.sql.DataSource。 从这样的 DataSource 获取的连接将在 jOOQ 执行查询后关闭。 这样的关闭操作的语义应该是将连接返回到连接池,而不是实际关闭底层连接。 通常,这在使用分布式 JTA 事务的环境中是有意义的。

请注意,在这种情况下,jOOQ 将在内部使用 org.jooq.impl.DataSourceConnectionProvider,如果您愿意,可以直接引用它。

注入自定义行为

如果您的特定环境与上述任何方法的工作方式不同,您可以将您自己的 ConnectionProvider 自定义实现注入到 jOOQ 中。 这是您必须满足的 API 契约

public interface ConnectionProvider {

    // Provide jOOQ with a connection
    Connection acquire() throws DataAccessException;

    // Get a connection back from jOOQ
    void release(Connection connection) throws DataAccessException;
}

响应式查询

如果您希望使用 R2DBC 驱动程序,则不必向您的 配置 提供 org.jooq.ConnectionProvider。 相反,jOOQ 可以与 io.r2dbc.spi.Connection (jOOQ 永远不会关闭它)或 io.r2dbc.spi.ConnectionFactory (jOOQ 将关闭它创建的所有 R2DBC 连接)。

反馈

您对此页面有任何反馈吗? 我们很乐意听到它!

The jOOQ Logo