Объектно-ориентированные запросы JOOQ
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Разработчик(и) | Данные Гикери ГмбХ |
---|---|
Стабильная версия | 3.19.10
/ 14 июня 2024 г [1] |
Репозиторий | github |
Написано в | Ява |
Операционная система | Кросс-платформенный |
Платформа | Ява |
Тип | Объектно-реляционное отображение |
Лицензия | Двойная лицензия: ASL 2.0 и коммерческая. |
Веб-сайт | www |
jOOQ Объектно-ориентированные запросы , широко известные как jOOQ , — это легкая программная библиотека для отображения баз данных на Java , реализующая шаблон активной записи . Его цель — быть как реляционной, так и объектно-ориентированной , предоставляя предметно-ориентированный язык для построения запросов из классов, созданных на основе схемы базы данных . [ нужна ссылка ]
Парадигма
[ редактировать ]jOOQ утверждает, что SQL должен стоять на первом месте при любой интеграции баз данных. Таким образом, он не вводит новый язык текстовых запросов , а позволяет создавать простой SQL из объектов jOOQ и кода, сгенерированного из схемы базы данных. jOOQ использует JDBC для вызова базовых запросов SQL. [ нужна ссылка ]
Хотя jOOQ обеспечивает абстракцию поверх JDBC, он не обладает такой же функциональностью и сложностью, как стандартные библиотеки объектно-реляционного отображения, такие как EclipseLink или Hibernate . [ нужна ссылка ]
Близость jOOQ к SQL имеет преимущества перед типичными библиотеками объектно-реляционного отображения. [ нужна ссылка ] SQL имеет множество возможностей, которые невозможно использовать в парадигме объектно-ориентированного программирования ; этот набор различий называется несоответствием объектно-реляционного импеданса . Будучи близким к SQL, jOOQ помогает предотвратить синтаксические ошибки и проблемы с сопоставлением типов. [ нужна ссылка ] Кроме того, обеспечивается привязка переменных. В jOOQ также можно создавать очень сложные запросы, включающие псевдонимы, объединения , вложенные выборки и сложные соединения . jOOQ также поддерживает функции, специфичные для базы данных, такие как UDT , типы перечислений , хранимые процедуры и собственные функции. [ нужна ссылка ]
Пример
[ редактировать ]Вложенный запрос, выбирающий из таблицы с псевдонимами
-- 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);
И его эквивалент в 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")))));
Или проще, используя генерацию кода из базы данных метаданных для генерации констант:
// 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))));
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Теги · jOOQ/jOOQ» . github.com . Проверено 19 июня 2024 г.