В этой статье не процитировать какие - либо источники . ( июнь 2010 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Операционные системы | Кроссплатформенность |
---|---|
Интернет сайт | eclipse-ee4j |
Под влиянием | |
SQL , гибернация |
Джакарта Постоянство язык запросов ( JPQL ; ранее Java Persistence Query Language) представляет собой независимую от платформы объектно-ориентированного язык запросов определяются как часть Джакартской персистенции (JPA; ранее Java Persistence API) спецификация.
JPQL используется для выполнения запросов к сущностям, хранящимся в реляционной базе данных. Он в значительной степени вдохновлен SQL , и его запросы напоминают запросы SQL по синтаксису, но работают с объектами сущностей JPA, а не напрямую с таблицами базы данных.
Помимо получения объектов ( SELECT
запросов), JPQL поддерживает запросы на основе наборов UPDATE
и DELETE
.
Примеры [ править ]
Пример JPA Классы, геттеры и сеттеры опущены для простоты.
@Entity public class Author { @Id private Integer id ; частная строка firstName ; частная строка lastName ; @ManyToMany частный список < Книга > книг ; } @Entity public class Book { @Id private Integer id ; частный заголовок строки ; частная строка isbn ; @ManyToOne частный издатель издателя ; @ManyToMany частный список авторов < Автор > ; } @Entity public class Publisher { @Id private Integer id ; частное строковое имя ; частный строковый адрес ; @OneToMany ( mappedBy = "publisher" ) частный список < Книга > книг ; }
Тогда простой запрос для получения списка всех авторов, упорядоченных в алфавитном порядке, будет выглядеть так:
ВЫБРАТЬ в FROM Автор с ORDER BY . firstName , а . фамилия
Чтобы получить список авторов, когда-либо публиковавшихся XYZ Press:
ВЫБРАТЬ ОТЛИЧИТЕЛЬНО a ОТ автора a ВНУТРЕННЕЕ СОЕДИНЕНИЕ a . книги б ГДЕ б . издатель . name = 'XYZ Press'
JPQL поддерживает именованные параметры, которые начинаются с двоеточия ( :
). Мы могли бы написать функцию, возвращающую список авторов с заданной фамилией, следующим образом:
import javax.persistence.EntityManager ; import javax.persistence.TypedQuery ;...общедоступный список < Автор > getAuthorsByLastName ( String lastName ) { String queryString = "ВЫБРАТЬ ОТ АВТОРА a" + "ГДЕ a.lastName ЕСТЬ NULL ИЛИ НИЖНИЙ (a.lastName) = LOWER (: lastName)" ; TypedQuery < Автор > query = getEntityManager (). createQuery ( queryString , Автор . класс ); запрос . setParameter ( "lastName" , lastName ); ответ на запрос . getResultList (); }
Язык запросов Hibernate [ править ]
JPQL основан на языке запросов Hibernate (HQL), ранее существовавшем нестандартном языке запросов, включенном в библиотеку объектно-реляционного сопоставления Hibernate .
Hibernate и HQL были созданы до спецификации JPA. Начиная с Hibernate 3, JPQL является подмножеством HQL.