# JDBC

Published articles for JDBC.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## JDBC batching can still issue one round trip per row unless driver statement rewriting is enabled

DevFeed: [JDBC batching can still issue one round trip per row unless driver statement rewriting is enabled](<https://devfeed.tech/articles/one-round-trip-beats-a-thousand-and-your-batch-api-probably-is-not-batching-39599.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/47-batching-one-round-trip-beats-a-thousand/>)

Author: hello@ankit-rana.com

Published: 2026-09-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [client](<https://devfeed.tech/topics/client.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [batching](<https://devfeed.tech/tags/batching.md>), [bulk-load](<https://devfeed.tech/tags/bulk-load.md>), [client](<https://devfeed.tech/tags/client.md>), [cost](<https://devfeed.tech/tags/cost.md>), [database](<https://devfeed.tech/tags/database.md>), [database-performance](<https://devfeed.tech/tags/database-performance.md>), [durability](<https://devfeed.tech/tags/durability.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [latency](<https://devfeed.tech/tags/latency.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [server](<https://devfeed.tech/tags/server.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

For small database writes, network round trips and transaction overhead can dominate the actual insert work. The article explains that JDBC batching may accept rows into a client-side batch while still sending separate statements unless driver-side statement rewriting is enabled, and that autocommit adds a transaction and durability barrier per row.

### Source excerpt

For small writes the per-statement overhead dominates the actual work, so throughput is set by round trips rather than by the database. JDBC batching is the usual fix and it silently does nothing on the wire unless the driver is told to rewrite the statements, so addBatch can look correct while still issuing one round trip per row. Autocommit compounds it by turning every row into its own transaction and its own durability barrier, which is the difference between one fsync and a hundred thousand.

## How INTEGER and INT Produced Different Schemas in Debezium

DevFeed: [How INTEGER and INT Produced Different Schemas in Debezium](<https://devfeed.tech/articles/how-integer-and-int-produced-different-schemas-in-debezium-20086.md>)

Original publisher: [Read original article](<https://lambda.blinkit.com/how-integer-and-int-produced-different-schemas-in-debezium-9c98e8a80aa2?source=rss----42df4a1e8725---4>)

Author: Prathit Malik

Published: 2026-09-02T07:02:02Z

Content type: article

Language: en

Sources: [Grofers](<https://devfeed.tech/sources/grofers.md>)

Topics: [MySQL](<https://devfeed.tech/topics/mysql.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [big-data](<https://devfeed.tech/tags/big-data.md>), [blinkit](<https://devfeed.tech/tags/blinkit.md>), [change](<https://devfeed.tech/tags/change.md>), [database](<https://devfeed.tech/tags/database.md>), [debezium](<https://devfeed.tech/tags/debezium.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [schema](<https://devfeed.tech/tags/schema.md>), [sql](<https://devfeed.tech/tags/sql.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

This article investigates a Debezium CDC pipeline failure caused by MySQL INT and INTEGER synonyms being treated as different types. The resulting schema mismatch produced an Integer where a downstream consumer expected a Long, causing a ClassCastException on every batch. It explains how streaming and snapshot schema handling differ and how routine migrations exposed the problem.

### Source excerpt

A Debezium investigation: how MySQL synonyms INT and INTEGER were treated as different types. One of our CDC pipelines started failing with a ClassCastException on every batch. java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long The pipeline was producing an Integer, but the downstream consumer expected a Long. Every run failed in the same way, which pointed us toward a schema mismatch rather than an issue with individual records. Background: how CDC works To see why a mismatch like that can hide for years, it helps to know how CDC actually works. Most companies replicate their transactional database (MySQL, Postgres, something similar) into a separate data lake for analytics, rather than querying the source directly, and Change Data Capture (CDC) is what keeps that copy in sync: it tails the database's transaction log and replays every insert, update, and delete downstream. Debezium is the most widely used open-source CDC tool for MySQL, and it builds a table's schema in one of two ways that are supposed to agree but do not always. Streaming mode: the first time it sees a CREATE TABLE or ALTER TABLE in the binlog, it parses the raw SQL text and writes the result to its own internal Kafka topic, database.history.kafka.topic. Every restart after that rebuilds the in-memory schema by replaying that topic, not by re-reading the binlog. Snapshot mode: reads the table definition fresh through MySQL's JDBC metadata interface, which normalizes types, every time it runs. Schema Registry sits downstream of both: each connector writes whatever schema it built into the registry, but neither connector reads its own schema back from it. Keep that in mind; it matters later. The trigger: a routine migration With that in mind, here's what actually happened to us. Rewind two years: one of our upstream service teams added a few columns to a source table as part of a standard schema change. ALTER TABLE <source_table> ADD COLUMN length double NU

## Keycloak 26.1.0 released

DevFeed: [Keycloak 26.1.0 released](<https://devfeed.tech/articles/keycloak-26-1-0-released-31680.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2025/01/keycloak-2610-released>)

Author: Keycloak Team

Published: 2025-01-15T00:00:00Z

Content type: release

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [Database](<https://devfeed.tech/topics/database.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [OpenTelemetry](<https://devfeed.tech/topics/opentelemetry.md>), [tracing](<https://devfeed.tech/topics/tracing.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [version](<https://devfeed.tech/topics/version.md>)

Tags: [cloud](<https://devfeed.tech/tags/cloud.md>), [database](<https://devfeed.tech/tags/database.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [idm](<https://devfeed.tech/tags/idm.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [keycloak-release](<https://devfeed.tech/tags/keycloak-release.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [opentelemetry](<https://devfeed.tech/tags/opentelemetry.md>), [release](<https://devfeed.tech/tags/release.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sso](<https://devfeed.tech/tags/sso.md>), [tracing](<https://devfeed.tech/tags/tracing.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Keycloak 26.1.0 changes the default cluster transport stack to database-based discovery, simplifying cloud deployments by removing the need for multicast and dynamic TCP ports. The release also enables virtual threads on OpenJDK 21, makes OpenTelemetry tracing fully supported and enabled by default, and includes configuration and credential-issuance improvements.

### Source excerpt

To download the release go to Keycloak downloads. Highlights Transport stack jdbc-ping as new default Keycloak now uses by default its database to discover other nodes of the same cluster, which removes the need of additional network related configurations especially for cloud providers. It is also a default that will work out-of-the-box in cloud environments. Previous versions of Keycloak used as a default UDP multicast to discover other nodes to form a cluster and to synchronize the replicated caches of Keycloak. This required multicast to be available and to be configured correctly, which is usually not the case in cloud environments. Starting with this version, the default changes to the jdbc-ping configuration which uses Keycloak's database to discover other nodes. As this removes the need for multicast network capabilities and UDP and no longer using dynamic ports for the TCP-based failure detection, this is a simplification and a drop-in replacement for environments which used the previous default. To enable the previous behavior, choose the transport stack udp which is now deprecated. The Keycloak Operator will continue to configure kubernetes as a transport stack. See the Configuring distributed caches guide for more information. Virtual Threads enabled for Infinispan and JGroups thread pools Starting from this release, Keycloak automatically enables the virtual thread pool support in both the embedded Infinispan and JGroups when running on OpenJDK 21. This removes the need to configure the JGroups thread pool, the need to align the JGroups thread pool with the HTTP worker thread pool, and reduces the overall memory footprint. OpenTelemetry Tracing supported In the previous release, the OpenTelemetry Tracing feature was preview and is fully supported now. It means the opentelemetry feature is enabled by default. There were made multiple improvements to the tracing capabilities in Keycloak such as: Configuration via Keycloak CR in Keycloak Operator Custom sp

## Maven Coordinates of the most popular JDBC Drivers

DevFeed: [Maven Coordinates of the most popular JDBC Drivers](<https://devfeed.tech/articles/maven-coordinates-of-the-most-popular-jdbc-drivers-28957.md>)

Original publisher: [Read original article](<https://blog.jooq.org/maven-coordinates-of-the-most-popular-jdbc-drivers/>)

Author: lukaseder

Published: 2023-12-13T11:25:44Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [Maven](<https://devfeed.tech/topics/maven.md>), [Maven Central](<https://devfeed.tech/topics/maven-central.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [drivers](<https://devfeed.tech/tags/drivers.md>), [integration](<https://devfeed.tech/tags/integration.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jdbc-drivers](<https://devfeed.tech/tags/jdbc-drivers.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [maven](<https://devfeed.tech/tags/maven.md>), [maven-central](<https://devfeed.tech/tags/maven-central.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

A list of Maven coordinates for popular JDBC drivers used in jOOQ integration tests, with guidance to verify current versions on Maven Central and check driver licenses before downloading.

### Source excerpt

Do you need to add a JDBC driver to your application, and don't know its Maven coordinates? This blog post lists the most popular drivers from the jOOQ integration tests. Look up the latest versions directly on https://central.sonatype.com/ with parameters g:groupId a:artifactId, for example, the H2 database and driver: https://central.sonatype.com/search?q=g%3Acom.h2database+a%3Ah2 The list only includes drivers ... Continue reading Maven Coordinates of the most popular JDBC Drivers ->

## JDBC Connection URLs of the Most Popular RDBMS

DevFeed: [JDBC Connection URLs of the Most Popular RDBMS](<https://devfeed.tech/articles/jdbc-connection-urls-of-the-most-popular-rdbms-28949.md>)

Original publisher: [Read original article](<https://blog.jooq.org/jdbc-connection-urls-of-the-most-popular-rdbms/>)

Author: lukaseder

Published: 2023-12-01T11:12:59Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [rdbms](<https://devfeed.tech/topics/rdbms.md>)

Tags: [connection-url](<https://devfeed.tech/tags/connection-url.md>), [driver](<https://devfeed.tech/tags/driver.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [popular](<https://devfeed.tech/tags/popular.md>), [rdbms](<https://devfeed.tech/tags/rdbms.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

A reference for finding JDBC connection URLs and driver names for popular relational database management systems.

### Source excerpt

Need to connect to your RDBMS with JDBC and don't have the JDBC connection URL or driver name at hand? No problem, just look up your RDBMS below:

## How to Pass a Table Valued Parameter to a T-SQL Function with jOOQ

DevFeed: [How to Pass a Table Valued Parameter to a T-SQL Function with jOOQ](<https://devfeed.tech/articles/how-to-pass-a-table-valued-parameter-to-a-t-sql-function-with-jooq-28943.md>)

Original publisher: [Read original article](<https://blog.jooq.org/how-to-pass-a-table-valued-parameter-to-a-t-sql-function-with-jooq/>)

Author: lukaseder

Published: 2023-04-25T12:16:30Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [sql-server](<https://devfeed.tech/topics/sql-server.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [code-generator](<https://devfeed.tech/tags/code-generator.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [sql-server](<https://devfeed.tech/tags/sql-server.md>), [t-sql](<https://devfeed.tech/tags/t-sql.md>), [table-valued-function](<https://devfeed.tech/tags/table-valued-function.md>), [table-valued-parameter](<https://devfeed.tech/tags/table-valued-parameter.md>)

### AI overview

This tutorial explains how to pass a Microsoft T-SQL table-valued parameter to a function using jOOQ. It covers native T-SQL and JDBC usage, then shows how jOOQ's code generator produces Java types and methods for calling the function and accessing its result rows.

### Source excerpt

Microsoft T-SQL supports a language feature called table-valued parameter (TVP), which is a parameter of a table type that can be passed to a stored procedure or function. For example, you may write: This function takes a table-valued parameter (TVP), and produces a result set containing the cross product of the parameter table with itself. ... Continue reading How to Pass a Table Valued Parameter to a T-SQL Function with jOOQ ->

## 3.18.0 Release with Support for more Diagnostics, SQL/JSON, Oracle Associative Arrays, Multi dimensional Arrays, R2DBC 1.0

DevFeed: [3.18.0 Release with Support for more Diagnostics, SQL/JSON, Oracle Associative Arrays, Multi dimensional Arrays, R2DBC 1.0](<https://devfeed.tech/articles/3-18-0-release-with-support-for-more-diagnostics-sql-json-oracle-associative-arrays-multi-dimensional-arrays-r2dbc-1-0-28927.md>)

Original publisher: [Read original article](<https://blog.jooq.org/3-18-0-release-with-support-for-more-diagnostics-sql-json-oracle-associative-arrays-multi-dimensional-arrays-r2dbc-1-0/>)

Author: lukaseder

Published: 2023-03-08T16:34:56Z

Content type: release

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Oracle Database](<https://devfeed.tech/topics/oracle-database.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [release](<https://devfeed.tech/tags/release.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-json](<https://devfeed.tech/tags/sql-json.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

jOOQ 3.18.0 is a release focused on expanded SQL diagnostics and SQL/JSON support, including vendor-specific MySQL and PostgreSQL features. It also adds improvements for the Query Object Model, Oracle associative arrays, PostgreSQL multidimensional arrays, Kotlin, and R2DBC 1.0.

### Source excerpt

DiagnosticsListener improvements A lot of additional diagnostics have been added, including the automated detection of pattern replacements, helping you lint your SQL queries irrespective of whether you're using jOOQ to write your SQL, or if you're using it as a JDBC / R2DBC proxy for an existing application. A lot of these diagnostics are available ... Continue reading 3.18.0 Release with Support for more Diagnostics, SQL/JSON, Oracle Associative Arrays, Multi dimensional Arrays, R2DBC 1.0 ->

## How to use jOOQ's Converters with UNION Operations

DevFeed: [How to use jOOQ's Converters with UNION Operations](<https://devfeed.tech/articles/how-to-use-jooq-s-converters-with-union-operations-28947.md>)

Original publisher: [Read original article](<https://blog.jooq.org/how-to-use-jooqs-converters-with-union-operations/>)

Author: lukaseder

Published: 2023-03-02T11:18:17Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [ad-hoc-converter](<https://devfeed.tech/tags/ad-hoc-converter.md>), [converter](<https://devfeed.tech/tags/converter.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [multiset](<https://devfeed.tech/tags/multiset.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [rdbms](<https://devfeed.tech/tags/rdbms.md>), [sql](<https://devfeed.tech/tags/sql.md>), [union](<https://devfeed.tech/tags/union.md>)

### AI overview

This tutorial explains how jOOQ ad-hoc converters behave with UNION operations. Because conversion occurs on the client after JDBC retrieval, it does not affect server-side UNION processing, and jOOQ applies the result-fetching row type from the first subquery. The article recommends applying client-side conversions consistently across subqueries or moving the conversion to the server when appropriate.

### Source excerpt

jOOQ 3.15 introduced the concept of an ad-hoc converter, a converter that is applied "ad-hoc" to a single query. It uses the same underlying mechanisms as any ordinary Converter that is attached to generated code for use in every query. An example of such an ad-hoc converter is this: While there are other ways to ... Continue reading How to use jOOQ's Converters with UNION Operations ->

## Why You Should Execute jOOQ Queries With jOOQ

DevFeed: [Why You Should Execute jOOQ Queries With jOOQ](<https://devfeed.tech/articles/why-you-should-execute-jooq-queries-with-jooq-28974.md>)

Original publisher: [Read original article](<https://blog.jooq.org/why-you-should-execute-jooq-queries-with-jooq/>)

Author: lukaseder

Published: 2023-01-18T11:46:25Z

Content type: opinion

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Java](<https://devfeed.tech/topics/java.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [code-generation](<https://devfeed.tech/tags/code-generation.md>), [crud](<https://devfeed.tech/tags/crud.md>), [csv](<https://devfeed.tech/tags/csv.md>), [execution](<https://devfeed.tech/tags/execution.md>), [export](<https://devfeed.tech/tags/export.md>), [identity](<https://devfeed.tech/tags/identity.md>), [import](<https://devfeed.tech/tags/import.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [json](<https://devfeed.tech/tags/json.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [multiset](<https://devfeed.tech/tags/multiset.md>), [nested-collections](<https://devfeed.tech/tags/nested-collections.md>), [nested-records](<https://devfeed.tech/tags/nested-records.md>), [orm](<https://devfeed.tech/tags/orm.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [sql](<https://devfeed.tech/tags/sql.md>), [stored-procedures](<https://devfeed.tech/tags/stored-procedures.md>), [type-safety](<https://devfeed.tech/tags/type-safety.md>), [udt](<https://devfeed.tech/tags/udt.md>), [updatablerecord](<https://devfeed.tech/tags/updatablerecord.md>), [user-defined-types](<https://devfeed.tech/tags/user-defined-types.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The article argues that queries built with jOOQ should generally also be executed with jOOQ. It explains that jOOQ preserves type safety and structured result mapping during execution, whereas extracting SQL and bind values for JDBC-level execution loses compiler knowledge of the result set. It acknowledges limited use cases for executing jOOQ-generated SQL elsewhere, such as a small number of dynamic queries in an otherwise JPA-based application.

### Source excerpt

Previously on this blog, I've written a post explaining why you should use jOOQ's code generator, despite the possibility of using jOOQ without it. In a similar fashion, as I've answered numerous jOOQ questions on Stack Overflow, where someone used jOOQ to build a query, but then executed it elsewhere, including on: jOOQ itself isn't ... Continue reading Why You Should Execute jOOQ Queries With jOOQ ->

## jOOQ's R2DBC LoggingConnection to log all SQL statements

DevFeed: [jOOQ's R2DBC LoggingConnection to log all SQL statements](<https://devfeed.tech/articles/jooq-s-r2dbc-loggingconnection-to-log-all-sql-statements-28954.md>)

Original publisher: [Read original article](<https://blog.jooq.org/jooqs-r2dbc-loggingconnection-to-log-all-sql-statements/>)

Author: lukaseder

Published: 2023-01-17T10:12:05Z

Content type: article

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [reactive](<https://devfeed.tech/topics/reactive.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [hibernate](<https://devfeed.tech/tags/hibernate.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jdbctemplate](<https://devfeed.tech/tags/jdbctemplate.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [logging](<https://devfeed.tech/tags/logging.md>), [native](<https://devfeed.tech/tags/native.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

The article introduces jOOQ's LoggingConnection for R2DBC clients, which logs reactive SQL queries. It notes that the utility is available in jOOQ versions 3.18.0, 3.17.7, and 3.16.13, and that standalone code is available on GitHub.

### Source excerpt

jOOQ already has a LoggingConnection (see also the manual), which acts as a JDBC proxy Connection to log all SQL statements that are executed by any JDBC client (including Hibernate, MyBatis, JdbcTemplate, native JDBC, etc.). Starting from jOOQ 3.18.0, 3.17.7, and 3.16.13, a LoggingConnection is now also available for R2DBC clients to log all reactive ... Continue reading jOOQ's R2DBC LoggingConnection to log all SQL statements ->

## When to Use jOOQ and When to Use Native SQL

DevFeed: [When to Use jOOQ and When to Use Native SQL](<https://devfeed.tech/articles/when-to-use-jooq-and-when-to-use-native-sql-28972.md>)

Original publisher: [Read original article](<https://blog.jooq.org/when-to-use-jooq-and-when-to-use-native-sql/>)

Author: lukaseder

Published: 2022-12-08T13:53:02Z

Content type: comparison

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [rdbms](<https://devfeed.tech/topics/rdbms.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [Testcontainers](<https://devfeed.tech/topics/testcontainers.md>)

Tags: [cons](<https://devfeed.tech/tags/cons.md>), [examples](<https://devfeed.tech/tags/examples.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jdbctemplate](<https://devfeed.tech/tags/jdbctemplate.md>), [jdbi](<https://devfeed.tech/tags/jdbi.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [native-sql](<https://devfeed.tech/tags/native-sql.md>), [plain-jdbc](<https://devfeed.tech/tags/plain-jdbc.md>), [plain-sql-templating](<https://devfeed.tech/tags/plain-sql-templating.md>), [rdbms](<https://devfeed.tech/tags/rdbms.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-json](<https://devfeed.tech/tags/sql-json.md>), [stored-procedures](<https://devfeed.tech/tags/stored-procedures.md>), [tdd](<https://devfeed.tech/tags/tdd.md>), [testcontainers](<https://devfeed.tech/tags/testcontainers.md>)

### AI overview

This comparison explains when to use the jOOQ API and when to use native SQL for complex queries. It describes jOOQ's advantages for dynamic SQL, multiple database dialects, type safety, data mapping, stored procedures, security, exports, and diagnostics, while noting usability drawbacks for large static queries with many CTEs or derived tables.

### Source excerpt

A frequently encountered doubt people have when using jOOQ is to decide when a "complex" query should be written using jOOQ API vs. when it should be implemented using native SQL. The jOOQ manual is full of side by side examples of the same query, e.g. Using jOOQ: Using native SQL: In the native SQL ... Continue reading When to Use jOOQ and When to Use Native SQL ->

## Calling Procedures with Default Parameters using JDBC or jOOQ

DevFeed: [Calling Procedures with Default Parameters using JDBC or jOOQ](<https://devfeed.tech/articles/calling-procedures-with-default-parameters-using-jdbc-or-jooq-28932.md>)

Original publisher: [Read original article](<https://blog.jooq.org/calling-procedures-with-default-parameters-using-jdbc-or-jooq/>)

Author: lukaseder

Published: 2022-10-21T14:35:39Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Reason](<https://devfeed.tech/topics/reason.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Oracle Database](<https://devfeed.tech/topics/oracle-database.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>)

Tags: [db2](<https://devfeed.tech/tags/db2.md>), [default-parameters](<https://devfeed.tech/tags/default-parameters.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [pl-pgsql](<https://devfeed.tech/tags/pl-pgsql.md>), [pl-sql](<https://devfeed.tech/tags/pl-sql.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql-server](<https://devfeed.tech/tags/sql-server.md>), [stored-functions](<https://devfeed.tech/tags/stored-functions.md>), [stored-procedures](<https://devfeed.tech/tags/stored-procedures.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This tutorial explains how to call stored procedures with default parameters using JDBC or jOOQ. It shows how directly instantiating a procedure call allows Java code to omit parameters that have database-side defaults, and notes that syntax varies across supported relational database systems.

### Source excerpt

Using jOOQ's code generator to call stored procedures is a popular reason to use jOOQ. For example, when you have a procedure like the following Oracle PL/SQL procedure: jOOQ will generate code for you to call very simply, like this: This will execute the following, taking care of binding all IN and OUT parameters for ... Continue reading Calling Procedures with Default Parameters using JDBC or jOOQ ->

## A Brief Overview over the Most Common jOOQ Types

DevFeed: [A Brief Overview over the Most Common jOOQ Types](<https://devfeed.tech/articles/a-brief-overview-over-the-most-common-jooq-types-28928.md>)

Original publisher: [Read original article](<https://blog.jooq.org/a-brief-overview-over-the-most-common-jooq-types/>)

Author: lukaseder

Published: 2022-09-06T12:30:37Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [API](<https://devfeed.tech/topics/api.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-design](<https://devfeed.tech/tags/api-design.md>), [cheat-sheet](<https://devfeed.tech/tags/cheat-sheet.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [context](<https://devfeed.tech/tags/context.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-3-17](<https://devfeed.tech/tags/jooq-3-17.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [logging](<https://devfeed.tech/tags/logging.md>), [overview](<https://devfeed.tech/tags/overview.md>), [queryparts](<https://devfeed.tech/tags/queryparts.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [sql](<https://devfeed.tech/tags/sql.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [type-system](<https://devfeed.tech/tags/type-system.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This tutorial provides a cheat sheet of the most important types in the jOOQ API, covering configuration, scopes, settings, and DSL APIs. It notes that jOOQ 3.17 includes more than 160 settings and explains how several type groups support query construction, execution, lifecycle management, and dependency injection.

### Source excerpt

For new users working with jOOQ for the first time, the number of types in the jOOQ API can be overwhelming. The SQL language doesn't have many such "visible" types, although if you think about SQL the way jOOQ does, then they're there just the same, but hidden from users via an English style syntax. ... Continue reading A Brief Overview over the Most Common jOOQ Types ->

## The Many Ways to Return Data From SQL DML

DevFeed: [The Many Ways to Return Data From SQL DML](<https://devfeed.tech/articles/the-many-ways-to-return-data-from-sql-dml-28963.md>)

Original publisher: [Read original article](<https://blog.jooq.org/the-many-ways-to-return-data-from-sql-dml/>)

Author: lukaseder

Published: 2022-08-23T15:02:04Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Oracle Database](<https://devfeed.tech/topics/oracle-database.md>), [CockroachDB](<https://devfeed.tech/topics/cockroachdb.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [cockroachdb](<https://devfeed.tech/tags/cockroachdb.md>), [data-change-delta-table](<https://devfeed.tech/tags/data-change-delta-table.md>), [database](<https://devfeed.tech/tags/database.md>), [firebird](<https://devfeed.tech/tags/firebird.md>), [generated-keys](<https://devfeed.tech/tags/generated-keys.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [mariadb](<https://devfeed.tech/tags/mariadb.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [return-generated-keys](<https://devfeed.tech/tags/return-generated-keys.md>), [returning](<https://devfeed.tech/tags/returning.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This article explains ways to return data from SQL DML statements using jOOQ across multiple SQL dialects and directly through JDBC. It covers RETURNING-style syntax, Oracle PL/SQL emulation, PostgreSQL support, and the SQL standard's data-change-table reference approach.

### Source excerpt

Probably the hardest thing to standardise in SQL is RETURNING data from DML statements. In this article, we'll look at various ways of doing that with jOOQ, in many of jOOQ's supported dialects, and with JDBC directly. How to do it with jOOQ Assuming the usual table from the sakila database: jOOQ took syntactic inspiration ... Continue reading The Many Ways to Return Data From SQL DML ->

## The Best Way to Call Stored Procedures from Java: With jOOQ

DevFeed: [The Best Way to Call Stored Procedures from Java: With jOOQ](<https://devfeed.tech/articles/the-best-way-to-call-stored-procedures-from-java-with-jooq-28961.md>)

Original publisher: [Read original article](<https://blog.jooq.org/the-best-way-to-call-stored-procedures-from-java-with-jooq/>)

Author: lukaseder

Published: 2022-07-28T13:11:59Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [Code generation](<https://devfeed.tech/topics/code-generation.md>), [Java](<https://devfeed.tech/topics/java.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [data-processing](<https://devfeed.tech/topics/data-processing.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [code-generation](<https://devfeed.tech/tags/code-generation.md>), [code-generator](<https://devfeed.tech/tags/code-generator.md>), [data-processing](<https://devfeed.tech/tags/data-processing.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jdbc-drivers](<https://devfeed.tech/tags/jdbc-drivers.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [pl-pgsql](<https://devfeed.tech/tags/pl-pgsql.md>), [pl-sql](<https://devfeed.tech/tags/pl-sql.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [rdbms](<https://devfeed.tech/tags/rdbms.md>), [schema](<https://devfeed.tech/tags/schema.md>), [sql](<https://devfeed.tech/tags/sql.md>), [stored-functions](<https://devfeed.tech/tags/stored-functions.md>), [stored-procedures](<https://devfeed.tech/tags/stored-procedures.md>), [t-sql](<https://devfeed.tech/tags/t-sql.md>), [udts](<https://devfeed.tech/tags/udts.md>)

### AI overview

This tutorial explains how to call stored procedures from Java using jOOQ-generated code. It contrasts JDBC calls with generated procedure stubs and convenience methods, covering parameter handling, database types, and support for procedures, functions, packages, and UDTs.

### Source excerpt

jOOQ is mainly known for its powerful type safe, embedded, dynamic SQL capabilities that are made available through code generation. However, a secondary use case of code generation is to use it for stored procedures (possibly exclusively for stored procedures). Stored procedures are powerful ways of moving complex data processing logic to the server. This ... Continue reading The Best Way to Call Stored Procedures from Java: With jOOQ ->

## The Many Different Ways to Fetch Data in jOOQ

DevFeed: [The Many Different Ways to Fetch Data in jOOQ](<https://devfeed.tech/articles/the-many-different-ways-to-fetch-data-in-jooq-28962.md>)

Original publisher: [Read original article](<https://blog.jooq.org/the-many-different-ways-to-fetch-data-in-jooq/>)

Author: lukaseder

Published: 2022-05-19T07:29:09Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [jooq](<https://devfeed.tech/topics/jooq.md>), [Java](<https://devfeed.tech/topics/java.md>), [SQL](<https://devfeed.tech/topics/sql.md>)

Tags: [collections](<https://devfeed.tech/tags/collections.md>), [collector](<https://devfeed.tech/tags/collector.md>), [convenience](<https://devfeed.tech/tags/convenience.md>), [fetching](<https://devfeed.tech/tags/fetching.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [joo-f6a0c60d3d07](<https://devfeed.tech/tags/joo-f6a0c60d3d07.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [optional](<https://devfeed.tech/tags/optional.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [reactive-streams](<https://devfeed.tech/tags/reactive-streams.md>), [sql](<https://devfeed.tech/tags/sql.md>), [stream-api](<https://devfeed.tech/tags/stream-api.md>), [streams](<https://devfeed.tech/tags/streams.md>)

### AI overview

This tutorial explains several ways to fetch data with jOOQ, including eager result-set fetching, external and internal iteration, single-record retrieval, optional results, and resource-managed fetching for large data sets.

### Source excerpt

The jOOQ API is all about convenience, and as such, an important operation (the most important one?) like fetch() must come with convenience, too. The default way to fetch data is this: It fetches the entire result set into memory and closes the underlying JDBC resources eagerly. But what other options do we have? Iterable ... Continue reading The Many Different Ways to Fetch Data in jOOQ ->

## Setting the JDBC Statement.setFetchSize() to 1 for Single Row Queries

DevFeed: [Setting the JDBC Statement.setFetchSize() to 1 for Single Row Queries](<https://devfeed.tech/articles/setting-the-jdbc-statement-setfetchsize-to-1-for-single-row-queries-28959.md>)

Original publisher: [Read original article](<https://blog.jooq.org/setting-the-jdbc-statement-setfetchsize-to-1-for-single-row-queries/>)

Author: lukaseder

Published: 2022-05-11T08:55:41Z

Content type: article

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [rdbms](<https://devfeed.tech/topics/rdbms.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [db2](<https://devfeed.tech/tags/db2.md>), [fetch](<https://devfeed.tech/tags/fetch.md>), [fetch-size](<https://devfeed.tech/tags/fetch-size.md>), [fetchsize](<https://devfeed.tech/tags/fetchsize.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-development](<https://devfeed.tech/tags/jooq-development.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [ojdbc](<https://devfeed.tech/tags/ojdbc.md>), [optimisation](<https://devfeed.tech/tags/optimisation.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [rdbms](<https://devfeed.tech/tags/rdbms.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-server](<https://devfeed.tech/tags/sql-server.md>)

### AI overview

This article examines whether jOOQ should call JDBC Statement.setFetchSize(1) by default for queries expected to return at most one row. It proposes measuring the effect with a JMH benchmark and discusses limitations on comparing execution speed across RDBMS.

### Source excerpt

An interesting hint by Vladimir Sitnikov has made me think about a new benchmark for jOOQ: The benchmark should check whether single row queries should have a JDBC Statement.setFetchSize(1) call made to them by default. The Javadoc of the method says: Gives the JDBC driver a hint as to the number of rows that should ... Continue reading Setting the JDBC Statement.setFetchSize() to 1 for Single Row Queries ->

## Clojure SQL library showdown

DevFeed: [Clojure SQL library showdown](<https://devfeed.tech/articles/clojure-sql-library-showdown-32108.md>)

Original publisher: [Read original article](<https://adambard.com/blog/clojure-sql-libs-compared/>)

Published: 2015-12-28T00:00:00Z

Content type: comparison

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Library](<https://devfeed.tech/topics/library.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>)

Tags: [clojure](<https://devfeed.tech/tags/clojure.md>), [compare](<https://devfeed.tech/tags/compare.md>), [dsls](<https://devfeed.tech/tags/dsls.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [library](<https://devfeed.tech/tags/library.md>), [orm](<https://devfeed.tech/tags/orm.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

A comparison of several Clojure SQL DSLs and libraries, including Korma and HoneySQL, against JDBC. The author discusses the trade-offs between writing SQL directly and using abstractions or ORM-style tools.

### Source excerpt

When it comes to database access, I've become less particular over the years as I've gotten more and more comfortable with SQL. These days I'm happier to write the SQL to get just the thing I want, than wrestle with an ORM to produce the same thing. Nevertheless, there's something to be said for abstractions over SQL, and they seem to have lasting popularity. In this post, I'll compare a few popular SQL DSLs for Clojure, and contrast them all with their mutual pappy, clojure.

## JPA2 with Guice

DevFeed: [JPA2 with Guice](<https://devfeed.tech/articles/jpa2-with-guice-37822.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/persistence-base/>)

Author: Carlos Alexandro Becker

Published: 2013-06-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Maven](<https://devfeed.tech/topics/maven.md>), [Database](<https://devfeed.tech/topics/database.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [bugs](<https://devfeed.tech/tags/bugs.md>), [database](<https://devfeed.tech/tags/database.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [maven](<https://devfeed.tech/tags/maven.md>), [project](<https://devfeed.tech/tags/project.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>)

### AI overview

A tutorial on using a Java persistence project base with Guice, Guava, EclipseLink, and Apache B-Val. It covers creating a Maven project, adding dependencies and a JDBC driver, defining a model and DAO, configuring bindings, and injecting repositories.

### Source excerpt

Some time ago, I posted here about a simple project that I've done in my post-graduation classes. Since I need it in other projects, and also some friends ended up using it in small projects, I decided to evolve it a little bit.