Misplaced Pages

JOOQ Object Oriented Querying

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
(Redirected from Java Object Oriented Querying)
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
The topic of this article may not meet Misplaced Pages's notability guidelines for products and services. Please help to demonstrate the notability of the topic by citing reliable secondary sources that are independent of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to be merged, redirected, or deleted.
Find sources: "JOOQ Object Oriented Querying" – news · newspapers · books · scholar · JSTOR (May 2019) (Learn how and when to remove this message)
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "JOOQ Object Oriented Querying" – news · newspapers · books · scholar · JSTOR (October 2021) (Learn how and when to remove this message)
(Learn how and when to remove this message)
jOOQ
Developer(s)Data Geekery GmbH
Stable release3.19.10 / June 14, 2024; 6 months ago (2024-06-14)
Repositorygithub.com/jOOQ/jOOQ
Written inJava
Operating systemCross-platform
PlatformJava
TypeObject–relational mapping
LicenseDual-licensed: Apache-2.0 and commercial
Websitewww.jooq.org

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.

Paradigm

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

A nested query selecting from an aliased table

-- Select authors with books that are sold out
SELECT * FROM AUTHOR a
      WHERE EXISTS (SELECT 1
                 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
create.selectFrom(table("AUTHOR").as("a"))
      .where(exists(selectOne()
                   .from(table("BOOK"))
                   .where(field("BOOK.STATUS").equal(field("BOOK_STATUS.SOLD_OUT")))
                   .and(field("BOOK.AUTHOR_ID").equal(field("a.ID")))));

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

// Use the aliased table in the select statement
final Author a = AUTHOR.as("a");
create.selectFrom(a)
      .where(exists(selectOne()
                   .from(BOOK)
                   .where(BOOK.STATUS.equal(BOOK_STATUS.SOLD_OUT))
                   .and(BOOK.AUTHOR_ID.equal(a.ID))));

See also

References

  1. "Tags · jOOQ/jOOQ". github.com. Retrieved 2024-06-19.

External links

Java (software platform)
Platforms
Oracle technologies
Platform technologies
Major third-party
technologies
History
JVM languages
Community
Conferences
Organizations
People
Category   icon Computer programming portal
Categories: