Объектно-ориентированные запросы jOOQ , широко известные как jOOQ , - это легкая программная библиотека отображения баз данных на Java, которая реализует шаблон активной записи . Его цель - быть как реляционной, так и объектно-ориентированной , предоставляя предметно-ориентированный язык для построения запросов из классов, сгенерированных из схемы базы данных . [ необходима цитата ]
Разработчики) | Data Geekery GmbH |
---|---|
Стабильный выпуск | 3.14.8 / 26 февраля 2021 г . [1] |
Репозиторий | github |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Платформа | Ява |
Тип | Объектно-реляционное отображение |
Лицензия | Двойная лицензия: ASL 2.0 и коммерческая |
Веб-сайт | www |
Парадигма
jOOQ утверждает, что SQL должен стоять на первом месте при любой интеграции базы данных. Таким образом, он не вводит новый язык текстовых запросов , а скорее позволяет создавать простой SQL из объектов jOOQ и кода, сгенерированного из схемы базы данных. jOOQ использует JDBC для вызова базовых SQL-запросов. [ необходима цитата ]
Хотя он обеспечивает абстракцию поверх JDBC, jOOQ не имеет такой функциональности и сложности, как стандартные библиотеки объектно-реляционного сопоставления, такие как EclipseLink или Hibernate . [ необходима цитата ]
Близость jOOQ к SQL имеет преимущества перед типичными библиотеками объектно-реляционного сопоставления. [ необходима цитата ] SQL имеет много возможностей, которые нельзя использовать в парадигме объектно-ориентированного программирования ; этот набор различий называется несоответствием объектно-реляционного импеданса . Благодаря близости к SQL jOOQ помогает предотвратить синтаксические ошибки и проблемы с отображением типов. [ необходима цитата ] Также заботится о связывании переменных. В jOOQ также можно создавать очень сложные запросы, которые включают псевдонимы, объединения , вложенные выборки и сложные объединения . jOOQ также поддерживает специфичные для базы данных особенности, такие как UDT , типы перечислений , хранимые процедуры и собственные функции. [ необходима цитата ]
Пример
Выбор вложенного запроса из таблицы с псевдонимом
- Выберите авторов с распроданными книгами ВЫБРАТЬ * ОТ АВТОРА a ГДЕ СУЩЕСТВУЕТ ( ВЫБРАТЬ 1 ИЗ КНИГИ, ГДЕ КНИГА . СТАТУС = 'ПРОДАНА' И КНИГА . AUTHOR_ID = a . ID );
И его аналог в jOOQ DSL:
// Используем таблицу с псевдонимом в операторе select create . selectFrom ( table ( "AUTHOR" ). as ( "a" )) . где ( существует ( selectOne () . from ( table ( "BOOK" )) . where ( field ( "BOOK.STATUS" ). equal ( field ( "BOOK_STATUS.SOLD_OUT" )) . and ( field ( "BOOK.AUTHOR_ID " ). equal ( field ( " a.ID " )))));
Или проще, используя генерацию кода из метаданных базы данных для генерации констант:
// Используем таблицу с псевдонимом в инструкции select final Author a = AUTHOR . как ( "а" ); создать . selectFrom ( а ) . где ( существует ( selectOne () . from ( BOOK ) . where ( BOOK . STATUS . equal ( BOOK_STATUS . SOLD_OUT )) . and ( BOOK . AUTHOR_ID . equal ( a . ID ))));
Смотрите также
Рекомендации
- ^ "Релизы · jOOQ / jOOQ" . github.com . Проверено 13 апреля 2021 .