Jump to content

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

jOOQ
Разработчик(и) Данные Гикери ГмбХ
Стабильная версия
3.19.10 / 14 июня 2024 г .; 49 дней назад ( 14.06.2024 ) [1]
Репозиторий github / jOOQ / jOOQ
Написано в Ява
Операционная система Кросс-платформенный
Платформа Ява
Тип Объектно-реляционное отображение
Лицензия Двойная лицензия: ASL 2.0 и коммерческая.
Веб-сайт www .jooq .org

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))));

См. также

[ редактировать ]
  1. ^ «Теги · jOOQ/jOOQ» . github.com . Проверено 19 июня 2024 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 543fa5979429c507ba17c2a9e7227a86__1720345740
URL1:https://arc.ask3.ru/arc/aa/54/86/543fa5979429c507ba17c2a9e7227a86.html
Заголовок, (Title) документа по адресу, URL1:
JOOQ Object Oriented Querying - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)