New dialects:
jOOQ 3.20 ships with 2 new experimental dialects:
- ClickHouse in all editions, together with the jOOQ Open Supply Version
- Databricks within the jOOQ Enterprise Version
ClickHouse is a fast-moving SQL dialect with a historic vendor-specific syntax that’s progressively migrated to a extra requirements compliant different, which is why our help continues to be experimental. Numerous behaviours differ from what one would count on elsewhere, together with NULL dealing with, which could be very totally different from customary SQL. Future jOOQ variations will proceed deepening this integration.
Databricks presents a really promising SQL dialect with numerous performance, which we’re going to cowl in full with the following model jOOQ 3.21. An preliminary model of the dialect is shipped already in 3.20 as an experimental dialect. 3.20 will proceed to obtain bug fixes and Databricks enhancements as we work with early adopting prospects.
DuckDB enhancements
We proceed supporting numerous DuckDB SQL options, together with:
- ARRAY, ROW, and STRUCT help
- MULTISET help
- JSON help
- Date time arithmetic
- Sequences
- Extra DDL help
- Extra DML help
- Spatial help
- And far more
New modules
So as to higher combine with Reactor, in all probability the preferred reactive streams API on the JVM, we’ve added a brand new jOOQ-reactor-extensions module, which presents an implementation of the brand new SubscriberProvider
SPI, a brand new SPI within the Configuration that helps make jOOQ’s R2DBC particular internals Reactor Context conscious.
The jOOQ-beans-extensions module now hosts our help for the @ConstructorProperties
annotation within the DefaultRecordMapper
, an annotation that’s positioned within the JDK’s jdk.desktop
module. This enables us to maneuver the heavy module dependency out of jOOQ’s core library, which is beneficial for these functions that need to omit transport the entire JDK and hold low footprints.
The jOOQ-jpa-extensions module now hosts our help for the varied JPA annotations like @Column
, @Desk
, additionally within the DefaultRecordMapper
, successfully eradicating the elective jakarta.persistence
dependency from the core library, in addition to providing different implementations of annotation based mostly mapping.
Assist for Oracle kind hierarchies
Oracle is essentially the most subtle ORDBMS implementation, with a wealthy set of object-oriented PL/SQL language options. jOOQ 3.20 lastly provides help for PL/SQL OBJECT kind hierarchies each in our code generator in addition to within the runtime library, making jOOQ a fair robust match to your PL/SQL language utilization
This can be a industrial solely function.
Higher spatial help
Numerous extra spatial capabilities have been added to jOOQ’s spatial help. These efforts additionally embrace many enhancements to the DuckDB and Oracle spatial implementations.
For extra data, confer with:
This can be a industrial solely function.
DECFLOAT help
A wide range of dialects supply an extra decimal floating level information kind, DECFLOAT
, along with the binary floating level sorts REAL
(32 bit), DOUBLE PRECISION
(64 bit), and FLOAT
(variable sized). Our new org.jooq.Decfloat
kind permits for capturing these sorts in our code generator and runtime.
Synonym help
A wide range of dialects help the idea of a SYNONYM
or ALIAS
the place an alternate identify may be given to any object kind.
jOOQ 3.20 helps these synonyms each within the code generator in addition to the DDL API. Future jOOQ variations could proceed to enhance synonym help, e.g. by producing kind aliases in Kotlin or Scala.
For extra data, confer with:
This can be a industrial solely function.
Hidden columns
Identical to a couple of dialects help hidden or invisible columns, that is now potential in jOOQ as nicely, on the shopper facet. Hiding columns successfully removes them from:
- Asterisk expansions
selectFrom()
and comparable calls- Generated information, POJOs, and interfaces
On the identical time, the columns are nonetheless out there for express references. This function may be helpful for schema evolution functions, the place information of deprecated columns is stored round for historic functions. It really works nicely along with the column deprecation function of the code generator:
For extra details about hidden columns, confer with:
This can be a industrial solely function.
Kotlin 2 and Scala 3 help
Ranging from jOOQ 3.20, we formally help each Kotlin 2 and Scala 3 and totally integration checks each the core libraries in addition to the code generator and extension libraries on these language variations. For Scala help, please additionally take into account our help matrix:
JDK baselines
The jOOQ Open Supply Version 3.20 will increase its baseline to JDK 21. Assist for older JDKs is out there int he industrial distributions, see:
Report soiled monitoring
jOOQ has lengthy supported file soiled monitoring in its UpdatableRecord
permitting for a easy means of performing CRUD. With jOOQ 3.20, it is going to be potential for customers to override the default behaviour of the soiled flag from a “touched” semantics to a “modified” semantics, successfully sending solely precise modifications to the database.
For extra data, confer with:
DML be part of enhancements
jOOQ 3.20 now helps the helpful DELETE .. USING
and UPDATE .. FROM
syntaxes on all RDBMS by a brand new set of SQL transformations that permit for these vendor particular JOIN syntaxes for use in DML statements even within the absence of MERGE
assertion help.
On the identical time, MERGE
itself additionally obtained an improve, together with:
BY SOURCE
andBY TARGET
help- A number of
WHEN NOT MATCHED AND ..
clause help
For extra data, confer with:
Code era enhancements
Numerous issues associated to the era of interfaces, immutablePojos, UDTs, and many others. have been addressed on this launch, making generated code extra sound for numerous configuration edge circumstances the place these options are mixed.
Handbook search
We have now (eventually!) added in-page search performance to our consumer handbook, so customers can higher discover data on our web site.
Extra enhancements
For details about the various different minor enhancements, bug fixes, and many others., please confer with the launch notes.