Java™ Persistence Query Language (JPQL) wird verwendet, um Suchabfragen für persistente Entitäten zu definieren, die vom Mechanismus zum Speichern dieser Entitäten unabhängig sind.
JPQL ist daher portierbar und nicht auf einen bestimmten Datenspeicher beschränkt.
JPQL ist eine Erweiterung der Enterprise JavaBeans-Abfragesprache EJB-QL. Die Sprache ist so konzipiert, dass sie die Syntax und die einfache Abfragesemantik von SQL mit der Ausdrucksfähigkeit einer objektorientierten Ausdrucksprache kombiniert.
Abfrageinstanzen werden mithilfe der Methoden erstellt, die in der EntityManager-Schnittstelle verfügbar sind.
JPQL definiert zwei Arten von Abfragen: dynamische Abfragen, die während des Betriebs erstellt werden, und benannte Abfragen.
Die Verwendung benannter Abfragen ist für Kontexte vorgesehen, in denen dieselbe Abfrage mehrmals gestartet wird. Zu den Hauptvorteilen benannter Abfragen zählen die verbesserte Wiederverwendbarkeit des Codes, der geringe Wartungsaufwand sowie eine potenziell bessere Leistung, da diese Abfragen nur einmal ausgewertet werden.
Benannte Abfragen werden mit der Annotation "@NamedQuery" definiert. Das Namensattribut wird verwendet, um die benannte Abfrage eindeutig zu identifizieren. Das Abfrageattribut definiert die Abfrage.