WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
Java Persistence Query Language
Класс языка язык программирования
Появился в 2009
Испытал влияние SQL

Java Persistence Query Language (JPQL) — платформо-независимый объектно-ориентированный язык запросов являющийся частью спецификации Java Persistence API.

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

В дополнение к получению объектов (SELECT-запросы), JPQL поддерживает запросы, основанные на операторах UPDATE и DELETE.

Примеры

Предположим, имеются-JPA сущности, определённые следующим образом (методы установки и получения значения свойств для простоты опущены):

@Entity
public class Author {
    @Id
    private Integer id;
    private String firstName;
    private String lastName;
    
    @ManyToMany
    private List<Book> books;
}

@Entity
public class Book {
    @Id
    private Integer id;
    private String title;
    private String isbn;
    
    @ManyToOne
    private Publisher publisher;
    
    @ManyToMany
    private List<Author> authors;
}

@Entity
public class Publisher {
    @Id
    private Integer id;
    private String name;
    private String address;

    @OneToMany(mappedBy = "publisher")
    private List<Book> books;
}

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

SELECT a FROM Author a ORDER BY a.firstName, a.lastName

Запрос для получения списка авторов, когда-либо опубликованных издательством «XYZ Press»:

SELECT DISTINCT a FROM Author a INNER JOIN a.books b WHERE b.publisher.name = 'XYZ Press'

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

import javax.persistence.EntityManager;
import javax.persistence.Query;

...

@SuppressWarnings("unchecked")
public List<Author> getAuthorsByLastName(String lastName) {
    String queryString = "SELECT a FROM Author a " +
                         "WHERE LOWER(a.lastName) = :lastName";
    Query query = getEntityManager().createQuery(queryString);
    
    query.setParameter("lastName", lastName.toLowerCase());
    return query.getResultList();
}

Hibernate Query Language

JPQL основан на Hibernate Query Language (HQL), более раннем не стандартизованном языке запросов, включённом в библиотеку объектно-реляционного отображения Hibernate.

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

См. также

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии