Java Persistence Query Language | |
---|---|
Clasa de limba | limbajul de interogare |
Aparut in | 2009 |
A fost influențat | SQL |
Site-ul web |
eclipse-ee4j.github.io/… ( engleză) eclipse-ee4j.github.io/… |
Java Persistence Query Language ( JPQL ) este un limbaj de interogare orientat pe obiecte independent de platformă, care face parte din specificația Java Persistence API (JPA).
JPQL este folosit pentru a scrie interogări împotriva entităților stocate într-o bază de date relațională. JPQL este similar cu SQL în multe feluri , dar spre deosebire de acesta din urmă, operează pe interogări făcute împotriva entităților JPA, spre deosebire de interogările directe împotriva tabelelor bazei de date.
Pe lângă obținerea de obiecte ( SELECT-interogări), JPQL acceptă interogări bazate pe operatorii UPDATEși DELETE.
Să presupunem că avem entități JPA definite după cum urmează (metodele setter și getter ale proprietăților au fost omise pentru simplitate):
@Entity public class Author { @Id private Integer id ; private String prenume ; private String lastName ; @ManyToMany private Listă < Carte > cărți ; } @Entity public class Book { @Id privat Integer id ; titlu privat String ; private String isbn ; @ManyToOne editor privat Publisher ; @ManyToMany private Listă < Autor > autori ; } @Entity public class Publisher { @Id private Integer id ; Nume șir privat ; _ adresă String privată ; @OneToMany ( mappedBy = "editor" ) private Listă < Carte > cărți ; }Următoarea interogare returnează o listă de autori în ordine alfabetică:
SELECTAȚI un FROM Autor o COMANDĂ DE a . prenume , a . numele de familieSolicitare pentru o listă de autori publicată vreodată de XYZ Press:
SELECTARE DISTINCT a FROM Autor a INNER JOIN a . cărți b UNDE b . editor . nume = 'XYZ Press'JPQL acceptă parametrii numiți care încep cu două puncte (:). O funcție care returnează o listă de autori cu un nume de familie dat va arăta astfel:
import javax.persistence.EntityManager ; import javax.persistence.Query ; ... @SuppressWarnings ( "nebifat" ) public List < Autor > getAuthorsByLastName ( String lastName ) { String queryString = "SELECTAȚI un autor de la " + "WHERE LOWER(a.lastName) = :lastName" ; Interogare de interogare = getEntityManager (). createQuery ( queryString ); interogare . setParameter ( "nume" , lastName.toLowerCase ( ) ); returnare interogare . getResultList (); }JPQL se bazează pe Hibernate Query Language (HQL), un limbaj de interogare anterior, nestandardizat, inclus în biblioteca de cartografiere relațională obiect Hibernate .
Hibernate și HQL au fost create înainte de apariția specificației JPA. JPQL este un subset al limbajului de interogare HQL.
API-ul Java Persistence | |
---|---|
|