Język zapytań o trwałość w Dżakarcie

Język zapytań o trwałość w Dżakarcie
system operacyjny Międzyplatformowe
Strona internetowa eclipse-ee4j .github .io /jakartaee-tutorial /persistence-querylanguage .html,%20https: //eclipse-ee4j .github .io /jakartaee-tutorial / #the-jakarta-persistence-query-language
Pod wpływem
SQL , Hibernate

Jakarta Persistence Query Language ( JPQL ; dawniej Java Persistence Query Language) to niezależny od platformy zorientowany obiektowo język zapytań , zdefiniowany jako część specyfikacji Jakarta Persistence (JPA; dawniej Java Persistence API).

JPQL służy do wykonywania zapytań do podmiotów przechowywanych w relacyjnej bazie danych. Jest silnie inspirowany SQL , a jego zapytania przypominają zapytania SQL w składni, ale działają raczej na obiektach jednostek JPA niż bezpośrednio na tabelach bazy danych.

Oprócz pobierania obiektów ( zapytania SELECT ), JPQL obsługuje zapytania UPDATE i DELETE oparte na zestawach.

Przykłady

Przykładowe klasy JPA, gettery i settery pominięte dla uproszczenia.


   
    
      
      
      
 
    
      

 

   
    
      
       @Entity  klasa  publiczna  Autor  {  @Id  private  Integer  id  ;  prywatny  String  imię  ;  prywatny  String  nazwisko  ;  @ManyToMany  prywatna  lista  <  Książka  >  książki  ;  }  @Entity  public  class  Book  {  @Id  private  Integer  id  ;  prywatny  tytuł  ciągu  ; 
      
 
    
      
 
    
      

 

   
    
      
      
      
 
      prywatny  String  isbn  ;  @ManyToOne  prywatny  wydawca  wydawca  ;  @ManyToMany  prywatna  lista  <autor>  autorzy  ;  _  _  }  @Entity  public  class  Wydawca  {  @Id  private  Integer  id  ;  prywatna  nazwa  ciągu  ;  prywatny  adres  String  ;  @OneToMany  (  mapowane przez  =  
      
 "wydawca"  )  lista  prywatna  <  Książka  >  książki  ;  } 

Wtedy proste zapytanie, aby pobrać listę wszystkich autorów, uporządkowaną alfabetycznie, wyglądałoby następująco:

         WYBIERZ  OD  Autora  ZAMÓWIENIE  PRZEZ  a  .  _  _  imię  ,  a  .  nazwisko 

Aby pobrać listę autorów, którzy kiedykolwiek zostali opublikowani przez XYZ Press:

              SELECT  DISTINCT  a  OD  autora  a  INNER  JOIN  a  .  książki  b  GDZIE  b  .  wydawca  .  nazwa  =  'XYZ Press' 

JPQL obsługuje nazwane parametry, które zaczynają się od dwukropka ( : ). Moglibyśmy napisać funkcję zwracającą listę autorów o podanym nazwisku w następujący sposób:

 
 



    
        
                         

        import  javax.persistence.EntityManager  ;  import  javax.persistence.TypedQuery  ;  ...  public  List  <  Autor  >  getAuthorsByLastName  (  String  lastName  )  {  String  queryString  =  "WYBIERZ OD Autora a "  +  "GDZIE a.nazwisko JEST NULL LUB NIŻSZE (a.nazwisko) = NIŻSZE (:nazwisko)"  ;  Wpisane zapytanie  <  autor  >  zapytanie  =  getEntityManager  
     
     
 ().  createQuery  (  queryString  ,  Author  .  class  );  zapytanie  .  setParameter  (  "nazwisko"  ,  nazwisko  );  zapytanie  zwrotne  .  pobierz listę wyników  ();  } 

Hibernacja języka zapytań

JPQL jest oparty na Hibernate Query Language (HQL), wcześniejszym niestandardowym języku zapytań zawartym w bibliotece mapowania obiektowo-relacyjnego Hibernate .

Hibernate i HQL powstały przed specyfikacją JPA. Od Hibernate 3 JPQL jest podzbiorem HQL.

Zobacz też

Linki zewnętrzne