# jooq

Published articles for jooq.

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

## Simplifying ANTI JOIN with jOOQ Syntax

DevFeed: [Simplifying ANTI JOIN with jOOQ Syntax](<https://devfeed.tech/articles/simplifying-anti-join-with-jooq-syntax-28960.md>)

Original publisher: [Read original article](<https://blog.jooq.org/simplifying-anti-join-with-jooq-syntax/>)

Author: lukaseder

Published: 2026-05-07T11:26:46Z

Content type: tutorial

Language: en

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

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [rdbms](<https://devfeed.tech/topics/rdbms.md>), [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [databricks](<https://devfeed.tech/topics/databricks.md>)

Tags: [anti-join](<https://devfeed.tech/tags/anti-join.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [databricks](<https://devfeed.tech/tags/databricks.md>), [join-paths](<https://devfeed.tech/tags/join-paths.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-syntax](<https://devfeed.tech/tags/sql-syntax.md>)

### AI overview

The article explains how to express an anti join more concisely with jOOQ. It shows that jOOQ can render native anti-join syntax for supported RDBMSs such as ClickHouse and Databricks, translate it for other systems, and use implicit correlated path joins introduced in jOOQ 3.19.

### Source excerpt

ANTI JOIN is a very useful operator from relational algebra. Regrettably, only few dialects support it in terms of SQL syntax, as we've written earlier. In jOOQ, you can write it as follows: If your RDBMS supports this natively (e.g. ClickHouse, Databricks), then it is rendered as such. Otherwise, jOOQ will translate this to: But ... Continue reading Simplifying ANTI JOIN with jOOQ Syntax ->

## Managing Sensitive Data in jOOQ 3.21+ Logs

DevFeed: [Managing Sensitive Data in jOOQ 3.21+ Logs](<https://devfeed.tech/articles/managing-sensitive-data-in-jooq-3-21-logs-28956.md>)

Original publisher: [Read original article](<https://blog.jooq.org/managing-sensitive-data-in-jooq-3-21-logs/>)

Author: lukaseder

Published: 2026-03-27T12:45:19Z

Content type: tutorial

Language: en

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

Topics: [Logging](<https://devfeed.tech/topics/logging.md>), [sensitive data](<https://devfeed.tech/topics/sensitive-data.md>), [Security](<https://devfeed.tech/topics/security.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [configuration](<https://devfeed.tech/tags/configuration.md>), [csv](<https://devfeed.tech/tags/csv.md>), [debug-logging](<https://devfeed.tech/tags/debug-logging.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [json](<https://devfeed.tech/tags/json.md>), [logging](<https://devfeed.tech/tags/logging.md>), [logs](<https://devfeed.tech/tags/logs.md>), [maven](<https://devfeed.tech/tags/maven.md>), [redacted-columns](<https://devfeed.tech/tags/redacted-columns.md>), [security](<https://devfeed.tech/tags/security.md>), [sensitive-data](<https://devfeed.tech/tags/sensitive-data.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This article explains how jOOQ debug logging can expose query bind values and fetched records in application logs, creating security concerns in production. It describes a code-generation configuration available in commercial jOOQ distributions to mask exported data, including text, HTML, and optionally CSV, JSON, or XML output.

### Source excerpt

One of jOOQ's most popular feature is the out-of-the-box debug logging experience. jOOQ developers find this feature very useful when developing their applications. Assuming you run a jOOQ query and configure your logger to print DEBUG log output: When this query is executed, your log output might contain something like this: Executing query : select ... Continue reading Managing Sensitive Data in jOOQ 3.21+ Logs ->

## Consider using JSON arrays instead of JSON objects for serialisation

DevFeed: [Consider using JSON arrays instead of JSON objects for serialisation](<https://devfeed.tech/articles/consider-using-json-arrays-instead-of-json-objects-for-serialisation-28935.md>)

Original publisher: [Read original article](<https://blog.jooq.org/consider-using-json-arrays-instead-of-json-objects-for-serialisation/>)

Author: lukaseder

Published: 2025-08-11T12:43:10Z

Content type: opinion

Language: en

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

Topics: [JSON](<https://devfeed.tech/topics/json.md>), [SQL](<https://devfeed.tech/topics/sql.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>), [compression](<https://devfeed.tech/tags/compression.md>), [java](<https://devfeed.tech/tags/java.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [json](<https://devfeed.tech/tags/json.md>), [json-array](<https://devfeed.tech/tags/json-array.md>), [json-object](<https://devfeed.tech/tags/json-object.md>), [overhead](<https://devfeed.tech/tags/overhead.md>), [performance](<https://devfeed.tech/tags/performance.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-json](<https://devfeed.tech/tags/sql-json.md>)

### AI overview

The article explains why jOOQ serialises some internal result data as JSON arrays of arrays instead of JSON objects. Positional access can be faster and avoids problems caused by duplicate column names, but the choice is a tradeoff and depends on whether people need to inspect the JSON or consume the API.

### Source excerpt

When implementing the awesome MULTISET operator in jOOQ, its implementation mostly relied on SQL/JSON support of various RDBMS. In short, while standard SQL supports nested collections via ARRAY or MULTISET operators like this: This is poorly supported in most RDBMS, so jOOQ emulates it using SQL/JSON as follows (or similar): Wait a second. A JSON ... Continue reading Consider using JSON arrays instead of JSON objects for serialisation ->

## When SQL Meets Lambda Expressions

DevFeed: [When SQL Meets Lambda Expressions](<https://devfeed.tech/articles/when-sql-meets-lambda-expressions-28971.md>)

Original publisher: [Read original article](<https://blog.jooq.org/when-sql-meets-lambda-expressions/>)

Author: lukaseder

Published: 2025-03-27T13:04:44Z

Content type: tutorial

Language: en

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

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [DuckDB](<https://devfeed.tech/topics/duckdb.md>), [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [databricks](<https://devfeed.tech/topics/databricks.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>)

Tags: [apply](<https://devfeed.tech/tags/apply.md>), [array](<https://devfeed.tech/tags/array.md>), [array-types](<https://devfeed.tech/tags/array-types.md>), [arrays](<https://devfeed.tech/tags/arrays.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [concatenation](<https://devfeed.tech/tags/concatenation.md>), [databricks](<https://devfeed.tech/tags/databricks.md>), [duckdb](<https://devfeed.tech/tags/duckdb.md>), [filter](<https://devfeed.tech/tags/filter.md>), [function](<https://devfeed.tech/tags/function.md>), [java](<https://devfeed.tech/tags/java.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [scala](<https://devfeed.tech/tags/scala.md>), [snowflake](<https://devfeed.tech/tags/snowflake.md>), [sql](<https://devfeed.tech/tags/sql.md>), [trino](<https://devfeed.tech/tags/trino.md>)

### AI overview

This article explains how SQL ARRAY types and lambda expressions are supported across several modern SQL dialects. It shows how jOOQ maps Java, Kotlin, and Scala lambda expressions to SQL expressions, including filtering arrays, and describes emulation with subqueries for dialects without lambda syntax.

### Source excerpt

ARRAY types are a part of the ISO/IEC 9075 SQL standard. The standard specifies how to: But it is very unopinionated when it comes to function support. The ISO/IEC 9075-2:2023(E) 6.47 <array value expression> specifies concatenation of arrays, whereas the 6.48 <array value function> section lists a not extremely useful TRIM_ARRAY function, exclusively (using which ... Continue reading When SQL Meets Lambda Expressions ->

## Resisting the Urge to Document Everything Everywhere

DevFeed: [Resisting the Urge to Document Everything Everywhere](<https://devfeed.tech/articles/resisting-the-urge-to-document-everything-everywhere-28958.md>)

Original publisher: [Read original article](<https://blog.jooq.org/resisting-the-urge-to-document-everything-everywhere/>)

Author: lukaseder

Published: 2025-02-28T10:39:07Z

Content type: opinion

Language: en

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

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

Tags: [caveat](<https://devfeed.tech/tags/caveat.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [generics](<https://devfeed.tech/tags/generics.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-development](<https://devfeed.tech/tags/jooq-development.md>), [quirk](<https://devfeed.tech/tags/quirk.md>), [sql](<https://devfeed.tech/tags/sql.md>), [stack-overflow](<https://devfeed.tech/tags/stack-overflow.md>), [xyproblem](<https://devfeed.tech/tags/xyproblem.md>)

### AI overview

The article argues that product teams should resist documenting every workaround alongside the feature that exposed a user's problem. Using jOOQ as an example, it explains that unrelated features can be difficult to discover even when one helps address a quirk or limitation in another.

### Source excerpt

Every product manager knows this situation: This is such a common pattern, and while it's perfectly understandable for such a user to request this, it is so terribly wrong to give in to this user's request. Why is it wrong? The features are unrelated Most of the time, the two features X1 and X2 are ... Continue reading Resisting the Urge to Document Everything Everywhere ->

## jOOQ 3.20 released with ClickHouse, Databricks, and much more DuckDB support, new modules, Oracle type hierarchies, more spatial support, decfloat and synonym support, hidden columns, Scala 3, Kotlin 2, and much more

DevFeed: [jOOQ 3.20 released with ClickHouse, Databricks, and much more DuckDB support, new modules, Oracle type hierarchies, more spatial support, decfloat and synonym support, hidden columns, Scala 3, Kotlin 2, and much more](<https://devfeed.tech/articles/jooq-3-20-released-with-clickhouse-databricks-and-much-more-duckdb-support-new-modules-oracle-type-hierarchies-more-spatial-support-decfloat-and-synonym-support-hidden-co-28953.md>)

Original publisher: [Read original article](<https://blog.jooq.org/jooq-3-20-released-with-clickhouse-databricks-and-much-more-duckdb-support-new-modules-oracle-type-hierarchies-more-spatial-support-decfloat-and-synonym-support-hidden-columns-scala-3-kotlin/>)

Author: lukaseder

Published: 2025-02-20T10:27:54Z

Content type: release

Language: en

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

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [databricks](<https://devfeed.tech/topics/databricks.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [DuckDB](<https://devfeed.tech/topics/duckdb.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Oracle Database](<https://devfeed.tech/topics/oracle-database.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Scala](<https://devfeed.tech/topics/scala.md>), [reactive](<https://devfeed.tech/topics/reactive.md>), [jpa](<https://devfeed.tech/topics/jpa.md>)

Tags: [array](<https://devfeed.tech/tags/array.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [databricks](<https://devfeed.tech/tags/databricks.md>), [decfloat](<https://devfeed.tech/tags/decfloat.md>), [dirty-tracking](<https://devfeed.tech/tags/dirty-tracking.md>), [dml-join](<https://devfeed.tech/tags/dml-join.md>), [duckdb](<https://devfeed.tech/tags/duckdb.md>), [hidden-columns](<https://devfeed.tech/tags/hidden-columns.md>), [jdk-21](<https://devfeed.tech/tags/jdk-21.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-3-20](<https://devfeed.tech/tags/jooq-3-20.md>), [jooq-development](<https://devfeed.tech/tags/jooq-development.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [json](<https://devfeed.tech/tags/json.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-2](<https://devfeed.tech/tags/kotlin-2.md>), [merge](<https://devfeed.tech/tags/merge.md>), [modules](<https://devfeed.tech/tags/modules.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [oracle-plsql-types](<https://devfeed.tech/tags/oracle-plsql-types.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [scala](<https://devfeed.tech/tags/scala.md>), [scala-3](<https://devfeed.tech/tags/scala-3.md>), [sequences](<https://devfeed.tech/tags/sequences.md>), [spatial](<https://devfeed.tech/tags/spatial.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

jOOQ 3.20 introduces experimental ClickHouse and Databricks SQL dialects, improves DuckDB support, adds new integration modules, and expands support for Oracle type hierarchies, spatial features, decfloat, synonyms, hidden columns, Scala 3, and Kotlin 2.

### Source excerpt

New dialects: jOOQ 3.20 ships with 2 new experimental dialects: ClickHouse is a fast-moving SQL dialect with a historic vendor-specific syntax that is gradually migrated to a more standards compliant alternative, which is why our support is still experimental. A lot of behaviours differ from what one would expect elsewhere, including NULL handling, which is ... Continue reading jOOQ 3.20 released with ClickHouse, Databricks, and much more DuckDB support, new modules, Oracle type hierarchies, more spatial support, decfloat and synonym support, hidden columns, Scala 3, Kotlin 2, and much more ->

## A Hidden Benefit of Implicit Joins: Join Elimination

DevFeed: [A Hidden Benefit of Implicit Joins: Join Elimination](<https://devfeed.tech/articles/a-hidden-benefit-of-implicit-joins-join-elimination-28930.md>)

Original publisher: [Read original article](<https://blog.jooq.org/a-hidden-benefit-of-implicit-joins-join-elimination/>)

Author: lukaseder

Published: 2024-01-10T14:19:00Z

Content type: article

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>)

Tags: [implicit-joins](<https://devfeed.tech/tags/implicit-joins.md>), [implicit-path-join](<https://devfeed.tech/tags/implicit-path-join.md>), [java](<https://devfeed.tech/tags/java.md>), [join-elimination](<https://devfeed.tech/tags/join-elimination.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-3-19](<https://devfeed.tech/tags/jooq-3-19.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [many-to-many-joins](<https://devfeed.tech/tags/many-to-many-joins.md>), [optimisation](<https://devfeed.tech/tags/optimisation.md>), [path-joins](<https://devfeed.tech/tags/path-joins.md>), [sql](<https://devfeed.tech/tags/sql.md>), [to-many-joins](<https://devfeed.tech/tags/to-many-joins.md>)

### AI overview

This article explains how jOOQ 3.19 can eliminate unnecessary tables from implicit path joins when no columns from those tables are referenced. Primary and foreign keys preserve equivalence, while referenced columns cause the table to remain in the join tree. The behavior applies to implicit path joins and depends on a flag that is disabled by default.

### Source excerpt

One of jOOQ's key features so far has always been to render pretty much exactly the SQL that users expect, without any surprises - unless some emulation is required to make a query work, of course. This means that while join elimination is a powerful feature of many RDBMS, it isn't part of jOOQ's feature ... Continue reading A Hidden Benefit of Implicit Joins: Join Elimination ->

## jOOQ 3.19's new Explicit and Implicit to-many path joins

DevFeed: [jOOQ 3.19's new Explicit and Implicit to-many path joins](<https://devfeed.tech/articles/jooq-3-19-s-new-explicit-and-implicit-to-many-path-joins-28952.md>)

Original publisher: [Read original article](<https://blog.jooq.org/jooq-3-19s-new-explicit-and-implicit-to-many-path-joins/>)

Author: lukaseder

Published: 2023-12-28T14:35:14Z

Content type: release

Language: en

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

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

Tags: [correlated-subqueries](<https://devfeed.tech/tags/correlated-subqueries.md>), [explicit-path-joins](<https://devfeed.tech/tags/explicit-path-joins.md>), [implicit-join](<https://devfeed.tech/tags/implicit-join.md>), [implicit-join-path-correlation](<https://devfeed.tech/tags/implicit-join-path-correlation.md>), [implicit-joins](<https://devfeed.tech/tags/implicit-joins.md>), [java](<https://devfeed.tech/tags/java.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-3-19](<https://devfeed.tech/tags/jooq-3-19.md>), [jooq-development](<https://devfeed.tech/tags/jooq-development.md>), [path-joins](<https://devfeed.tech/tags/path-joins.md>), [sql](<https://devfeed.tech/tags/sql.md>), [to-many-path-joins](<https://devfeed.tech/tags/to-many-path-joins.md>)

### AI overview

This article describes jOOQ 3.19's support for explicit path joins and new to-many path joins. It explains how path-based joins can simplify SQL queries, derive join predicates from foreign-key metadata, and allow per-query control over join types.

### Source excerpt

jOOQ 3.19 finally delivers on a set of features that will greatly simplify your queries further, after jOOQ 3.11 introduced implicit to-one joins: What are these features? Many ORMs (e.g. JPA, Doctrine, jOOQ 3.11 and others) support "path joins" (they may have different names for this concept). A path join is a join derived from ... Continue reading jOOQ 3.19's new Explicit and Implicit to-many path joins ->

## jOOQ 3.19.0 Released with DuckDB, Trino, Oracle 23c support, join path improvements, an official gradle plugin, commercial maven repositories, policies, UDT paths, trigger meta data, hierarchies, and much more

DevFeed: [jOOQ 3.19.0 Released with DuckDB, Trino, Oracle 23c support, join path improvements, an official gradle plugin, commercial maven repositories, policies, UDT paths, trigger meta data, hierarchies, and much more](<https://devfeed.tech/articles/jooq-3-19-0-released-with-duckdb-trino-oracle-23c-support-join-path-improvements-an-official-gradle-plugin-commercial-maven-repositories-policies-udt-paths-trigger-meta-d-28951.md>)

Original publisher: [Read original article](<https://blog.jooq.org/jooq-3-19-0-released-with-duckdb-trino-oracle-23c-support-join-path-improvements-an-official-gradle-plugin-commercial-maven-repositories-policies-udt-paths-trigger-meta-data-hierarchies-and/>)

Author: lukaseder

Published: 2023-12-15T16:30:41Z

Content type: release

Language: en

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

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [DuckDB](<https://devfeed.tech/topics/duckdb.md>), [CockroachDB](<https://devfeed.tech/topics/cockroachdb.md>), [Maven](<https://devfeed.tech/topics/maven.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [rdbms](<https://devfeed.tech/topics/rdbms.md>), [Multi-tenancy](<https://devfeed.tech/topics/multi-tenancy.md>)

Tags: [cockroachdb](<https://devfeed.tech/tags/cockroachdb.md>), [cockroachdb-23](<https://devfeed.tech/tags/cockroachdb-23.md>), [duckdb](<https://devfeed.tech/tags/duckdb.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [implicit-joins](<https://devfeed.tech/tags/implicit-joins.md>), [java-8](<https://devfeed.tech/tags/java-8.md>), [join-paths](<https://devfeed.tech/tags/join-paths.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-3-19](<https://devfeed.tech/tags/jooq-3-19.md>), [jooq-development](<https://devfeed.tech/tags/jooq-development.md>), [maven](<https://devfeed.tech/tags/maven.md>), [maven-repository](<https://devfeed.tech/tags/maven-repository.md>), [multi-tenancy](<https://devfeed.tech/tags/multi-tenancy.md>), [oracle-23c](<https://devfeed.tech/tags/oracle-23c.md>), [policies](<https://devfeed.tech/tags/policies.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [releases](<https://devfeed.tech/tags/releases.md>), [row-level-security](<https://devfeed.tech/tags/row-level-security.md>), [security](<https://devfeed.tech/tags/security.md>), [trigger-meta-data](<https://devfeed.tech/tags/trigger-meta-data.md>), [triggers](<https://devfeed.tech/tags/triggers.md>), [trino](<https://devfeed.tech/tags/trino.md>), [trinodb](<https://devfeed.tech/tags/trinodb.md>), [udt-paths](<https://devfeed.tech/tags/udt-paths.md>), [udts](<https://devfeed.tech/tags/udts.md>)

### AI overview

The jOOQ 3.19.0 release adds experimental DuckDB support, Trino support, and support for CockroachDB 23 and Oracle 23c. It also improves join paths, introduces an official Gradle plugin and a commercial Maven repository, and adds policies for row-level security.

### Source excerpt

New Dialects It's been a few releases since we've added support for new dialects, but finally some very interesting RDBMS of increasing popularity have joined the jOOQ family including: These dialects are available in all jOOQ editions. New dialect versions In addition to these entirely new dialects, big new CockroachDB and Oracle versions have shipped: ... Continue reading jOOQ 3.19.0 Released with DuckDB, Trino, Oracle 23c support, join path improvements, an official gradle plugin, commercial maven repositories, policies, UDT paths, trigger meta data, hierarchies, and much more ->

## 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 ->

## jOOQ DAOs, CRUD Access, and the N+1 Query Problem

DevFeed: [jOOQ DAOs, CRUD Access, and the N+1 Query Problem](<https://devfeed.tech/articles/to-dao-or-not-to-dao-28968.md>)

Original publisher: [Read original article](<https://blog.jooq.org/to-dao-or-not-to-dao/>)

Author: lukaseder

Published: 2023-12-06T13:41:52Z

Content type: opinion

Language: en

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

Topics: [CRUD](<https://devfeed.tech/topics/crud.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Domain-driven design (DDD)](<https://devfeed.tech/topics/domain-driven-design.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [account](<https://devfeed.tech/topics/account.md>)

Tags: [account](<https://devfeed.tech/tags/account.md>), [api](<https://devfeed.tech/tags/api.md>), [crud](<https://devfeed.tech/tags/crud.md>), [dao](<https://devfeed.tech/tags/dao.md>), [data](<https://devfeed.tech/tags/data.md>), [ddd](<https://devfeed.tech/tags/ddd.md>), [developers](<https://devfeed.tech/tags/developers.md>), [join](<https://devfeed.tech/tags/join.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [optimisation](<https://devfeed.tech/tags/optimisation.md>), [repository](<https://devfeed.tech/tags/repository.md>), [sql](<https://devfeed.tech/tags/sql.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This opinion article examines jOOQ's DAO API and the tendency to use DAOs or repositories for quick CRUD access. It argues that this approach can obscure query design and lead to inefficient patterns such as N+1 queries, while showing how explicit SQL and bulk operations can improve query structure and performance.

### Source excerpt

jOOQ's DAO API is one of jOOQ's most controversial features. When it was first implemented, it was implemented merely: There's a strong hint about the third bullet given how popular Spring Data's repository "pattern" is. A lot of developers just want to quickly fetch and store data, without giving individual queries much thought. A fun ... Continue reading To DAO or not to DAO ->

## How to Generate Package Private Code with jOOQ's Code Generator

DevFeed: [How to Generate Package Private Code with jOOQ's Code Generator](<https://devfeed.tech/articles/how-to-generate-package-private-code-with-jooq-s-code-generator-28941.md>)

Original publisher: [Read original article](<https://blog.jooq.org/how-to-generate-package-private-code-with-jooqs-code-generator/>)

Author: lukaseder

Published: 2023-06-28T15:54:18Z

Content type: tutorial

Language: en

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

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Java](<https://devfeed.tech/topics/java.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Java 9](<https://devfeed.tech/topics/java-9.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>), [compilation](<https://devfeed.tech/tags/compilation.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [java-9](<https://devfeed.tech/tags/java-9.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-code-generator](<https://devfeed.tech/tags/jooq-code-generator.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [modularity](<https://devfeed.tech/tags/modularity.md>), [package-private](<https://devfeed.tech/tags/package-private.md>), [visibility](<https://devfeed.tech/tags/visibility.md>), [visibility-modifier](<https://devfeed.tech/tags/visibility-modifier.md>)

### AI overview

This tutorial explains Java package-private visibility and shows how to configure jOOQ's code generator to generate package-private types. The approach can help keep generated jOOQ implementation details from leaking into client code.

### Source excerpt

Java's package private visibility is an underrated feature. When you omit any visibility modifier in Java, then the default (for most objects) is package private, i.e. the object is visible only to types in the same package: In fact, a compilation unit (the .java file) can contain multiple such classes. You don't have to create ... Continue reading How to Generate Package Private Code with jOOQ's Code Generator ->

## 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 ->

## How to Write a Derived Table in jOOQ

DevFeed: [How to Write a Derived Table in jOOQ](<https://devfeed.tech/articles/how-to-write-a-derived-table-in-jooq-28948.md>)

Original publisher: [Read original article](<https://blog.jooq.org/how-to-write-a-derived-table-in-jooq/>)

Author: lukaseder

Published: 2023-02-24T09:18:48Z

Content type: tutorial

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>)

Tags: [cte](<https://devfeed.tech/tags/cte.md>), [derived-table](<https://devfeed.tech/tags/derived-table.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [sql](<https://devfeed.tech/tags/sql.md>), [type-safety](<https://devfeed.tech/tags/type-safety.md>)

### AI overview

This tutorial explains how to write derived tables and common table expressions in jOOQ. It notes that derived-table columns are not fully type-safe in Java, and shows that simplifying an SQL query can sometimes eliminate the derived table and allow greater use of generated code.

### Source excerpt

One of the more frequent questions about jOOQ is how to write a derived table (or a CTE). The jOOQ manual shows a simple example of a derived table: In SQL: In jOOQ: And that's pretty much it. The question usually arises from the fact that there's a surprising lack of type safety when working ... Continue reading How to Write a Derived Table in jOOQ ->

## 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 ->

## Using jOOQ's Implicit Join From Within the JOIN .. ON Clause

DevFeed: [Using jOOQ's Implicit Join From Within the JOIN .. ON Clause](<https://devfeed.tech/articles/using-jooq-s-implicit-join-from-within-the-join-on-clause-28970.md>)

Original publisher: [Read original article](<https://blog.jooq.org/using-jooqs-implicit-join-from-within-the-join-on-clause/>)

Author: lukaseder

Published: 2022-09-13T07:29:59Z

Content type: tutorial

Language: en

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

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

Tags: [dictionary-views](<https://devfeed.tech/tags/dictionary-views.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implicit-join](<https://devfeed.tech/tags/implicit-join.md>), [information-schema](<https://devfeed.tech/tags/information-schema.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>), [pg-catalog](<https://devfeed.tech/tags/pg-catalog.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This tutorial explains how to use jOOQ's type-safe implicit JOINs from within an explicit JOIN ... ON clause. It uses PostgreSQL dictionary views and related tables as an example, and describes how jOOQ generates SQL while preserving operator precedence.

### Source excerpt

Starting with jOOQ 3.11, type safe implicit JOIN have been made available, and they've been enhanced to be supported also in DML statements in jOOQ 3.17. Today, I'd like to focus on a somewhat weird but really powerful use-case for implicit JOIN, when joining additional tables from within an explicit JOIN's ON clause. The use ... Continue reading Using jOOQ's Implicit Join From Within the JOIN .. ON Clause ->

## 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 Second Best Way to Fetch a Spring Data JPA DTO Projection

DevFeed: [The Second Best Way to Fetch a Spring Data JPA DTO Projection](<https://devfeed.tech/articles/the-second-best-way-to-fetch-a-spring-data-jpa-dto-projection-28966.md>)

Original publisher: [Read original article](<https://blog.jooq.org/the-second-best-way-to-fetch-a-spring-data-jpa-dto-projection/>)

Author: lukaseder

Published: 2022-08-30T14:48:44Z

Content type: tutorial

Language: en

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

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [dto-projection](<https://devfeed.tech/tags/dto-projection.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [nested-collections](<https://devfeed.tech/tags/nested-collections.md>), [repositories](<https://devfeed.tech/tags/repositories.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [spring-data-jpa](<https://devfeed.tech/tags/spring-data-jpa.md>)

### AI overview

The article presents jOOQ as a second way to implement a Spring Data JPA DTO projection. It shows value-constructor and aggregate-function approaches, emphasizing type-safe record conversion and reduced infrastructure code.

### Source excerpt

I've just stumbled upon this great post by Vlad Mihalcea, titled The Best Way to Fetch a Spring Data JPA DTO Projection. It got some nice traction on reddit, too. This is such a nice use-case and apt solution, I wanted to quickly show the second best way of doing the same, with jOOQ this ... Continue reading The Second Best Way to Fetch a Spring Data JPA DTO Projection ->

## Cannot resolve symbol 'VERSION\_3\_17' in jOOQ generated code

DevFeed: [Cannot resolve symbol 'VERSION\_3\_17' in jOOQ generated code](<https://devfeed.tech/articles/cannot-resolve-symbol-version-3-17-in-jooq-generated-code-28933.md>)

Original publisher: [Read original article](<https://blog.jooq.org/cannot-resolve-symbol-version_3_17-in-jooq-generated-code/>)

Author: lukaseder

Published: 2022-08-30T06:56:20Z

Content type: tutorial

Language: en

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

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Maven](<https://devfeed.tech/topics/maven.md>)

Tags: [code-generation](<https://devfeed.tech/tags/code-generation.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [compilation-error](<https://devfeed.tech/tags/compilation-error.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [errors](<https://devfeed.tech/tags/errors.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [java](<https://devfeed.tech/tags/java.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [location](<https://devfeed.tech/tags/location.md>), [maven](<https://devfeed.tech/tags/maven.md>)

### AI overview

This article explains that a VERSION_3_17 compilation error in jOOQ-generated code is caused by a mismatch between the runtime library and code generation library. The runtime version must be at least as new as the code generation version; matching both versions is recommended.

### Source excerpt

Starting with jOOQ 3.16 and #12601, there may be a compilation error with a message like this in your jOOQ generated code: [ERROR] .../DefaultCatalog.java:[53,73] cannot find symbol[ERROR] symbol: variable VERSION_3_17[ERROR] location: class org.jooq.Constants Typically, this error is mixed with other compilation errors in generated code. Its purpose is to help troubleshoot these other compilation errors. ... Continue reading Cannot resolve symbol 'VERSION_3_17' in jOOQ generated code ->

[Next page](<https://devfeed.tech/tags/jooq.md?cursor=WyIyMDIyLTA4LTMwVDA2OjU2OjIwKzAwOjAwIiwgImZmM2VlN2I1LWVkYjYtNDYzNi05NWI2LTc2NDhhMzU5YWM5ZSJd>)