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. 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. jOOQ's closeness to SQL has advantages over typical object–relational mapping libraries. 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. 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. ==Example==