Объектно-ориентированные запросы JOOQ

редактировать
jOOQ
Разработчик (и) Data Geekery GmbH
Стабильный выпуск 3.12.3 / 31 октября 2019 г. (2019-10-31)
Написано наJava
Операционная система Кросс-платформенная
Платформа Java
Тип Объектно-реляционное сопоставление
Лицензия Двойная лицензия: ASL 2.0 и коммерческий
Веб-сайтhttp://www.jooq.org

объектно-ориентированный запрос jOOQ, широко известный как jOOQ, представляет собой легкое программное обеспечение для отображения баз данных библиотека в Java, которая реализует шаблон активной записи. Его цель - быть как реляционным, так и объектно-ориентированным, предоставляя предметно-ориентированный язык для построения запросов из классов, сгенерированных из схема базы данных.

Содержание

  • 1 Парадигма
  • 2 Пример
  • 3 См. Также
  • 4 Внешние ссылки

Парадигма

jOOQ утверждает, что SQL должен быть первым при любой интеграции базы данных. Таким образом, он не вводит новый текстовый язык запросов, а скорее позволяет создавать простой SQL из объектов jOOQ и кода, сгенерированного из схемы базы данных. jOOQ использует JDBC для вызова базовых запросов SQL.

Хотя он предоставляет абстракцию поверх JDBC, jOOQ не имеет такой функциональности и сложности, как стандартный объектно-реляционное сопоставление библиотеки, такие как EclipseLink или Hibernate.

Близость jOOQ к SQL имеет преимущества по сравнению с типичными библиотеками объектно-реляционного сопоставления. SQL имеет множество функций, которые нельзя использовать в объектно-ориентированной парадигме программирования ; этот набор различий называется объектно-реляционным несоответствием импеданса. Приближаясь к SQL, jOOQ помогает предотвратить синтаксические ошибки и проблемы сопоставления типов. Также заботится о привязке переменных. В jOOQ также можно создавать очень сложные запросы, которые включают псевдонимы, объединения, вложенные выборки и сложные объединения. jOOQ также поддерживает специфичные для базы данных функции, такие как UDT, типы перечислений, хранимые процедуры и собственные функции.

Пример

Вложенный запрос, выбирающий из таблицы с псевдонимом

- Выберите авторов с распроданными книгами SELECT * FROM AUTHOR a WHERE EXISTS (SELECT 1 FROM BOOK WHERE BOOK.STATUS = 'SOLD OUT' AND BOOK.AUTHOR_ID = a.МНЕ БЫ);

И его эквивалент в jOOQ DSL:

// Используйте таблицу с псевдонимом в операторе select 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 (" а.ID ")))));

Или проще, используя генерацию кода из базы данных метаданных для генерации констант:

// Используем таблицу с псевдонимом в заключительной части оператора select Автор a = AUTHOR.as ("a"); create.selectFrom (a).where (существует (selectOne ().from (BOOK).where (BOOK.STATUS.equal (BOOK_STATUS.SOLD_OUT)).and (BOOK.AUTHOR_ID.equal (a.ID))));

См. Также

Внешние ссылки

Последняя правка сделана 2021-05-24 10:14:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте