Jakartan pysyvyyskyselykieli - Jakarta Persistence Query Language
| Käyttöjärjestelmä | Monialustainen |
|---|---|
| Verkkosivusto | eclipse-ee4j |
| Vaikuttanut | |
| SQL , horrostila | |
Jakarta Pysyvyys Query Language ( JPQL ; aiemmin Java Pysyvyys Query Language) on alustasta riippumaton olio- kyselyn kieli määritellään osana Jakarta Pysyvyys (JPA; aiemmin Java Pysyvyys API) selityksessä.
JPQL: tä käytetään kyselyiden tekemiseen relaatiotietokantaan tallennettuja kokonaisuuksia vastaan. Se on vahvasti SQL: n innoittama , ja sen kyselyt muistuttavat syntaksissa SQL -kyselyitä, mutta toimivat JPA -kokonaisuusobjekteja vastaan eivätkä suoraan tietokantataulukoiden kanssa.
Objektien ( SELECTkyselyiden) noutamisen lisäksi JPQL tukee joukkopohjaisia UPDATEja DELETEkyselyitä.
Esimerkkejä
Esimerkki JPA Luokat, getterit ja setterit jätetään pois yksinkertaisuuden vuoksi.
@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;
}
Sitten yksinkertainen kysely kaikkien tekijöiden luettelon hakemiseksi aakkosjärjestyksessä olisi:
SELECT a FROM Author a ORDER BY a.firstName, a.lastName
Voit hakea luettelon tekijöistä, jotka XYZ Press on koskaan julkaissut:
SELECT DISTINCT a FROM Author a INNER JOIN a.books b WHERE b.publisher.name = 'XYZ Press'
JPQL tukee nimettyjä parametreja, jotka alkavat kaksoispisteellä ( :). Voisimme kirjoittaa funktion, joka palauttaa luettelon etunimellä kirjoittajista seuraavasti:
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
...
public List<Author> getAuthorsByLastName(String lastName) {
String queryString = "SELECT a FROM Author a " +
"WHERE a.lastName IS NULL OR LOWER(a.lastName) = LOWER(:lastName)";
TypedQuery<Author> query = getEntityManager().createQuery(queryString, Author.class);
query.setParameter("lastName", lastName);
return query.getResultList();
}
Lepotilan kyselykieli
JPQL perustuu horrostilaan liittyvään kyselykieleen (HQL), joka on aiempi epätyypillinen kyselykieli, joka sisältyy Hibernate- objektisuhteiden kartoituskirjastoon .
Lepotila ja HQL luotiin ennen JPA -määritystä. Vuodesta Hibernate 3 JPQL on HQL: n osajoukko.