Java Persistence Query Language | |
---|---|
Språkklass | frågespråk |
Framträdde i | 2009 |
Blivit påverkad | SQL |
Hemsida |
eclipse-ee4j.github.io/… ( engelska) eclipse-ee4j.github.io/… |
Java Persistence Query Language ( JPQL ) är ett plattformsoberoende objektorienterat frågespråk som är en del av Java Persistence API (JPA)-specifikationen.
JPQL används för att skriva frågor mot enheter lagrade i en relationsdatabas. JPQL liknar SQL på många sätt , men till skillnad från den senare fungerar den på frågor som görs mot JPA-enheter, i motsats till direkta frågor mot databastabeller.
Förutom att få objekt ( SELECT-queries), stöder JPQL frågor baserade på operatorerna UPDATEoch DELETE.
Antag att vi har JPA-enheter definierade enligt följande (sätter- och gettermetoderna för egenskaper har utelämnats för enkelhetens skull):
@Entity public class Författare { @Id privat Heltals - id ; privat sträng förnamn ; privat sträng efternamn ; @ManyToMany privat lista < Bok > böcker ; } @Entity public class Bok { @Id privat Heltals - id ; privat strängtitel ; _ privat sträng isbn ; @ManyToOne privat förlagsutgivare ; _ @ManyToMany privat lista < Författare > författare ; } @Entity public class Utgivare { @Id privat Heltals - id ; privat strängnamn ; _ privat strängadress ; _ @OneToMany ( mapdBy = "publisher" ) privat lista < Bok > böcker ; }Följande fråga returnerar en lista över författare i alfabetisk ordning:
VÄLJ en FRÅN författare en BESTÄLLNING AV en . förnamn , a . efternamnBegäran om en lista över författare som någonsin publicerats av XYZ Press:
VÄLJ DISTINTERA en FRÅN författare a INNER JOIN a . böcker b VAR b . utgivare . namn = 'XYZ Press'JPQL stöder namngivna parametrar som börjar med ett kolon (:). En funktion som returnerar en lista över författare med ett givet efternamn kommer att se ut så här:
importera javax.persistence.EntityManager ; importera javax.persistence.Query ; ... @SuppressWarnings ( "unchecked" ) offentlig lista < Author > getAuthorsByLastName ( String efternamn ) { String queryString = "VÄLJ en FRÅN författare a " + "WHERE LOWER(a.lastName) = :efternamn" ; Query query = getEntityManager (). createQuery ( queryString ); fråga . setParameter ( "efternamn" , lastName.toLowerCase ( ) ); returförfrågan . _ getResultList (); }JPQL är baserat på Hibernate Query Language (HQL), ett tidigare icke-standardiserat frågespråk som ingår i Hibernate objektrelationell mappningsbibliotek .
Hibernate och HQL skapades före tillkomsten av JPA-specifikationen. JPQL är en delmängd av frågespråket HQL.
Java Persistence API | |
---|---|
|