What jOOQ.x helps

jooqx leverages the power of typesafe SQL from jOOQ DSL and uses the reactive and non-blocking SQL driver from Vert.x

Overview

jooqx Provide uniform API for among

jooqx supports:

  • Lightweight and SPI

  • Typesafe

  • Native jOOQ DSL API

  • Any database with JDBC driver and combine with legacy SQL

  • Any database with Vert.x reactive client(JDBCPool is reactive JDBC driver so almost databases should work properly)

  • JsonObject record

  • Row/record transformation to jOOQ record

  • A unified format for exception and able to replace/integrate seamlessly by your current application exception

  • CRUD with prepared query by jOOQ DSL

  • SQL Complex query with typesafe such as join, with, having to, etc

  • SQL Batch insert/update/merge

  • SQL Transaction

    • Nested transaction (not yet tested, but API is available)

    • Transaction rollback condition

    • Transaction annotation

  • Procedure & Function

  • DAO

  • Resource Query Language (RQL) by rsql-jooq

  • Rxified API

    • Rx2

    • Rx3

    • Mutiny

  • Row streaming

  • Publish/subscribe

  • Observability

  • Polyglot API: kotlin, groovy

  • Test fixtures API to easy setup test for your application testing or produce a minimum reproducer

Short Note

Might you know, vertx-jooq is another library for vert.x and jOOQ integration was started in a longtime ago.

I already used it, too. However, in a while I realized it doesn’t meet my requirements for dynamic SQL. Also, this library is narrow a power of jOOQ DSL and SQL feature likes paging, batch, transaction, complex query with join/having/group, etc. It is quite hard to extend due to mostly depends on Data Access Object (DAO) pattern, and the generation time.

Always have a different way to make it better, then I made this library to bring jOOQ DSL is first citizen and seamlessly combined with Vert.x SQL client.