EJB QL oder EJB-QL (Enterprise Java Beans Query Language) ist eine Abfragesprache für Enterprise Java Beans (EJB). Sie wird in Jakarta-EE-Anwendungen angewendet. Im Vergleich zu SQL ist sie weniger komplex, aber auch nicht so mächtig.[1]
EJB3-QL wurde insbesondere von der Hibernate Query Language (HQL) beeinflusst.[2] Die Java Persistence Query Language bzw. Jakarta Persistence Query Language (JPQL) stellt eine Erweiterung von EJB QL dar.[3]
Die Syntax der EJB QL ähnelt der von SQL. Die verwendeten Abfragen unterscheiden sich aber von der relationellen Sprache SQL, welche auf dem relationellen Modell aufbauen. EJB QL verwendet stattdessen das so genannte „abstrakte Schema“ der Enterprise Java Beans. Eine SQL-Abfrage enthält Tabellen, sowie deren Zeilen und Spalten. Im Gegensatz dazu beinhalten die EJB-QL-Abfragen EJBs, sowie deren persistente Zustände und Relationen. Das Ergebnis einer SQL-Abfrage sind Zeilen mit einer fixen Anzahl von Spalten. Das Ergebnis einer EJB-QL-Abfrage sind Objekte einer bestimmten Klasse oder eine Ansammlung von Werten, welche aus einem EJB-Container abgerufen wurden („Container Managed Persistence“, CMP).[4]