Jakarta Persistence Query Language - Jakarta Persistence Query Language

Jakarta Persistence Query Language
Операционные системыКроссплатформенность
Интернет сайтeclipse-ee4j.github.io/ jakartaee-tutorial/ persistence-querylanguage.html
Под влиянием
SQL, Спящий режим

В Jakarta Persistence Query Language (JPQL; ранее называвшийся Java Persistence Query Language) не зависит от платформы объектно-ориентированный язык запросов определяется как часть Джакарта Стойкость (JPA; ранее Java Persistence API) спецификация.

JPQL используется для выполнения запросов к сущностям, хранящимся в реляционной базе данных. Он во многом вдохновлен SQL, и его запросы напоминают запросы SQL по синтаксису, но работают с объектами сущностей JPA, а не напрямую с таблицами базы данных.

Помимо получения объектов (ВЫБРАТЬ запросов), JPQL поддерживает набор на основе ОБНОВИТЬ и УДАЛИТЬ запросы.

Примеры

Пример JPA Классы, геттеры и сеттеры опущены для простоты.

@Юридическое лицообщественный класс Автор {    @Идентификатор    частный Целое число я бы;    частный Строка имя;    частный Строка фамилия;     @ManyToMany    частный Список<Книга> книги;} @Юридическое лицообщественный класс Книга {    @Идентификатор    частный Целое число я бы;    частный Строка заглавие;    частный Строка isbn;     @ManyToOne    частный Издатель издатель;     @ManyToMany    частный Список<Автор> авторы;} @Юридическое лицообщественный класс Издатель {    @Идентификатор    частный Целое число я бы;    частный Строка имя;    частный Строка адрес;     @Один ко многим(mappedBy = "издатель")    частный Список<Книга> книги;}

Тогда простой запрос для получения списка всех авторов, упорядоченных в алфавитном порядке, будет выглядеть так:

ВЫБРАТЬ а ИЗ Автор а ПОРЯДОК ОТ а.имя, а.фамилия

Чтобы получить список авторов, когда-либо публиковавшихся XYZ Press:

ВЫБРАТЬ ОТЧЕТЛИВЫЙ а ИЗ Автор а ВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ а.книги б КУДА б.издатель.имя = 'XYZ Press'

JPQL поддерживает именованные параметры, которые начинаются с двоеточия (:). Мы могли бы написать функцию, возвращающую список авторов с заданной фамилией, следующим образом:

импорт javax.persistence.EntityManager;импорт javax.persistence.TypedQuery;...общественный Список<Автор> getAuthorsByLastName(Строка фамилия) {    Строка Строка запроса = "ВЫБРАТЬ ОТ АВТОРА" +                         "WHERE a.lastName IS NULL OR LOWER (a.lastName) = LOWER (: lastName)";    TypedQuery<Автор> запрос = getEntityManager().createQuery(Строка запроса, Автор.класс);    запрос.setParameter("фамилия", фамилия);    вернуть запрос.getResultList();}

Язык запросов Hibernate

JPQL основан на Язык запросов Hibernate (HQL), ранее использовавшийся нестандартный язык запросов, включенный в Спящий режим объектно-реляционное отображение библиотека.

Hibernate и HQL были созданы до спецификации JPA. Что касается Hibernate 3, JPQL является подмножеством HQL.

Смотрите также

внешняя ссылка