JOOQ Object Oriented Querying

  (Redirected from Java Object Oriented Querying)

jOOQ Object Oriented Querying, commonly known as jOOQ, is a light database-mapping software library in Java that implements the active record pattern. Its purpose is to be both relational and object oriented by providing a domain-specific language to construct queries from classes generated from a database schema.[citation needed]

Developer(s)Data Geekery GmbH
Stable release
3.12.3 / October 31, 2019 (2019-10-31)
Written inJava
Operating systemCross-platform
TypeObject-relational mapping
LicenseDual-licensed: ASL 2.0 and commercial


jOOQ claims that SQL should come first in any database integration. Thus, it does not introduce a new textual query language, but rather allows for constructing plain SQL from jOOQ objects and code generated from a database schema. jOOQ uses JDBC to call the underlying SQL queries.[citation needed]

While it provides abstraction on top of JDBC, jOOQ does not have as much functionality and complexity as standard object-relational mapping libraries such as EclipseLink or Hibernate.[citation needed]

jOOQ's closeness to SQL has advantages over typical object-relational mapping libraries.[citation needed] SQL has many features that cannot be used in an object oriented programming paradigm; this set of differences is referred to as the object-relational impedance mismatch. By being close to SQL, jOOQ helps to prevent syntax errors and type mapping problems.[citation needed] Also, variable binding is taken care of. It is also possible in jOOQ to create very complex queries, that involve aliasing, unions, nested selects and complex joins. jOOQ also supports database-specific features, such as UDTs, enum types, stored procedures and native functions.[citation needed]


A nested query selecting from an aliased table

  -- Select authors with books that are sold out
                   FROM BOOK
                  WHERE BOOK.STATUS = 'SOLD OUT'
                    AND BOOK.AUTHOR_ID = a.ID);

And its equivalent in jOOQ DSL:

  // Use the aliased table in the select statement

Or more simply, using code generation from the database metadata to generate constants:

  // Use the aliased table in the select statement
  final Author a ="a");


See alsoEdit

External linksEdit