WikiDer > Jakarta Persistence Query Language
эта статья не цитировать любой источники. (Июнь 2010 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
Операционные системы | Кроссплатформенность |
---|---|
Интернет сайт | eclipse-ee4j |
Под влиянием | |
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.