Jakarta Persistence Query Language

Jakarta Persistence Query Language
OS Cross-plattform
Hemsida eclipse-ee4j .github .io /jakartaee-tutorial /persistence-querylanguage .html,%20https: //eclipse-ee4j .github .io /jakartaee-tutorial / #the-jakarta-persistence-query-language
Influerad av
SQL , Hibernate

Jakarta Persistence Query Language ( JPQL ; tidigare Java Persistence Query Language) är ett plattformsoberoende objektorienterat frågespråk som definieras som en del av Jakarta Persistence -specifikationen (JPA; tidigare Java Persistence API).

JPQL används för att göra frågor mot enheter lagrade i en relationsdatabas. Den är starkt inspirerad av SQL , och dess frågor liknar SQL-frågor i syntax, men fungerar mot JPA-entitetsobjekt snarare än direkt med databastabeller.

Förutom att hämta objekt ( SELECT- frågor) stöder JPQL uppsättningsbaserade UPDATE- och DELETE -frågor.

Exempel

Exempel på JPA-klasser, getters och setters utelämnade för enkelhets 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  ;  } 

Då skulle en enkel fråga för att hämta listan över alla författare, ordnad alfabetiskt, vara:

         VÄLJ  en  FRÅN  författare  en  BESTÄLLNING  AV  en  .  förnamn  ,  a  .  efternamn 

För att hämta listan över författare som någonsin har publicerats av XYZ Press:

              VÄLJ  DISTINCT  a  FROM  Author  a  INNER  JOIN  a  .  böcker  b  VAR  b  .  utgivare  .  namn  =  'XYZ Press' 

JPQL stöder namngivna parametrar, som börjar med kolon ( : ). Vi skulle kunna skriva en funktion som returnerar en lista över författare med det angivna efternamnet enligt följande:

 
 



    
        
                         

        
     
     
 import  javax.persistence.EntityManager  ;  importera  javax.persistence.TypedQuery  ;  ...  offentlig  lista  <  Författare  >  getAuthorsByLastName  (  String  efternamn  )  {  String  queryString  =  "VÄLJ en FRÅN författare a "  +  "WHERE a.lastName IS NULL OR LOWER(a.lastName) = LOWER(:lastName)"  ;  TypedQuery  <  Author  >  query  =  getEntityManager  ().  createQuery  (  queryString  ,  Author  .  class  );  fråga  .  setParameter  (  "efternamn"  ,  efternamn  );  returförfrågan  .  _  getResultList  ();  } 

Viloläge frågespråk

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 JPA-specifikationen. Från Hibernate 3 är JPQL en delmängd av HQL.

Se även

externa länkar