WikiDer > Объектно-ориентированные запросы JOOQ
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Разработчики) | Data Geekery GmbH |
---|---|
Стабильный выпуск | 3.14.3 / 10 ноября 2020 г. |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Платформа | Ява |
Тип | Объектно-реляционное отображение |
Лицензия | Двойная лицензия: ASL 2.0 и коммерческий |
Интернет сайт | http://www.jooq.org |
Объектно-ориентированные запросы jOOQ, широко известный как jOOQ, это легкое отображение базы данных библиотека программного обеспечения в Ява который реализует активный шаблон записи. Его цель - быть как реляционный и объектно-ориентированный путем предоставления предметно-ориентированный язык строить запросы из классы созданы из схема базы данных.[нужна цитата]
Парадигма
jOOQ утверждает, что SQL должен быть первым при любой интеграции базы данных. Таким образом, он не вводит новый текстовый язык запросов, а позволяет строить простые SQL из объектов jOOQ и кода, созданного из схемы базы данных. jOOQ использует JDBC для вызова базовых SQL-запросов.[нужна цитата]
Хотя он обеспечивает абстракция помимо JDBC, jOOQ не имеет такой функциональности и сложности, как стандарт объектно-реляционное отображение библиотеки, такие как EclipseLink или же Спящий режим.[нужна цитата]
Близость jOOQ к SQL имеет преимущества перед типичными библиотеками объектно-реляционного сопоставления.[нужна цитата] SQL имеет множество функций, которые нельзя использовать в объектно-ориентированный парадигма программирования; этот набор различий называется объектно-относительное рассогласование импеданса. Будучи близок к SQL, jOOQ помогает предотвратить синтаксические ошибки и проблемы отображения типов.[нужна цитата] Также заботится о связывании переменных. В jOOQ также можно создавать очень сложные запросы, которые включают алиасинг, союзы, вложенные выборки и сложные соединения. jOOQ также поддерживает специфичные для базы данных функции, такие как UDT, типы перечисления, хранимые процедуры и собственные функции.[нужна цитата]
Пример
Выбор вложенного запроса из таблицы с псевдонимом
- Выберите авторов с распроданными книгами ВЫБРАТЬ * ИЗ АВТОР а КУДА СУЩЕСТВУЮТ (ВЫБРАТЬ 1 ИЗ КНИГА КУДА КНИГА.ПОЛОЖЕНИЕ ДЕЛ = 'РАСПРОДАННЫЙ' И КНИГА.AUTHOR_ID = а.Я БЫ);
И его аналог в jOOQ DSL:
// Используем таблицу с псевдонимом в операторе выбора Создайте.выбрать из(стол(«АВТОР»).в качестве("а")) .куда(существуют(Выбери один() .из(стол("КНИГА")) .куда(поле("СТАТУС КНИГИ").равный(поле("BOOK_STATUS.SOLD_OUT"))) .и(поле("BOOK.AUTHOR_ID").равный(поле("помогать")))));
Или проще, используя генерация кода от база данных метаданные для генерации констант:
// Используем таблицу с псевдонимом в операторе выбора окончательный Автор а = АВТОР.в качестве("а"); Создайте.выбрать из(а) .куда(существуют(Выбери один() .из(КНИГА) .куда(КНИГА.ПОЛОЖЕНИЕ ДЕЛ.равный(BOOK_STATUS.РАСПРОДАННЫЙ)) .и(КНИГА.AUTHOR_ID.равный(а.Я БЫ))));