Jakarta Persistence Query LanguageJakarta Persistence Query Language (JPQL. Раніше, Java Persistence Query Language) — це платформо-незалежна об'єктно-орієнтована мова запитів, що є частиною специфікації Java Persistence API (JPA). JPQL використовується для написання запитів до сутностей, що зберігаються в реляційній базі даних. Вона значною мірою схожа на SQL, і її запити нагадують запити SQL за синтаксисом, але працюють на об'єктах сутностей JPA (JPA entity objects), а не на таблицях бази даних. В додаток до вибирання об'єктів (запити ПрикладиПрикладові класи 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 a.lastName IS NULL OR LOWER(a.lastName) = LOWER(:lastName)";
Query query = getEntityManager().createQuery(queryString);
query.setParameter("lastName", lastName);
return query.getResultList();
}
Hibernate Query LanguageJPQL базується на Hibernate Query Language (HQL), старшій, не стандартизованій мові запитів, що включена до бібліотеку об'єктно-реляційного відображення Hibernate. Hibernate та HQL були створенні до появи специфікації JPA. Так само як Hibernate 3, JPQL є підмножиною мови запитів HQL. Див. також
|
Portal di Ensiklopedia Dunia