Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Java Persistence Query Language )
Перейти к навигации Перейти к поиску

Джакарта Постоянство язык запросов ( 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.

См. Также [ править ]

Внешние ссылки [ править ]