Jakartan pysyvyyskyselykieli - Jakarta Persistence Query Language

Jakartan pysyvyyskyselykieli
Käyttöjärjestelmä Monialustainen
Verkkosivusto eclipse-ee4j .github .io /jakartaee-tutorial /persistence-querylanguage .html,%20https: // eclipse-ee4j .github .io /jakartaee-tutorial / #the-jakarta-persistence-query-language
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.

Katso myös

Ulkoiset linkit