🌿 JPQL (Java Persistence Query Language) Cheatsheet Completo 🌿

JPQL es el lenguaje de consulta orientado a objetos definido como parte de la especificación Java Persistence API (JPA). Permite escribir consultas que operan sobre entidades y sus relaciones, no sobre tablas y columnas de base de datos directamente. Es similar a SQL en su sintaxis, pero opera a un nivel más alto de abstracción.


1. 🌟 Conceptos Clave


2. 🛠️ Sintaxis Básica JPQL

JPQL es un lenguaje de consulta fuertemente tipado. Las palabras clave no distinguen entre mayúsculas y minúsculas (aunque se usa mayúsculas por convención).

2.1. Cláusulas Básicas

2.2. Ejemplo de Entidad

// src/main/java/com/example/model/Product.java
import jakarta.persistence.*; // o javax.persistence.*

@Entity // Nombre por defecto es el nombre de la clase: Product
@Table(name = "productos")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;
    private Boolean active;
    @ManyToOne
    @JoinColumn(name = "category_id")
    private Category category; // Relación con Category
    // Getters y Setters
}

// src/main/java/com/example/model/Category.java
import jakarta.persistence.*; // o javax.persistence.*

@Entity
@Table(name = "categorias")
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    // Getters y Setters
}

3. 🚀 Consultas SELECT

3.1. Seleccionar Entidades Completas

3.2. Seleccionar Campos Específicos (Projections)

3.3. Funciones de Agregación

3.4. GROUP BY y HAVING

3.5. Ordenación (ORDER BY)

3.6. Paginación (setFirstResult, setMaxResults)


4. 🔄 JOINS (Combinación de Entidades)


5. 🪆 Subconsultas

JPQL soporta subconsultas en la cláusula WHERE y HAVING.


6. 📝 Sentencias DML (Modificación de Datos)

JPQL también permite operaciones básicas de UPDATE y DELETE. No soporta INSERT.


7. 🔑 Parámetros de Consulta

Para pasar valores dinámicos a las consultas. Protege contra la inyección SQL.


8. 🌐 Funciones JPQL Comunes

JPQL tiene un conjunto limitado de funciones incorporadas, a menudo mapeadas a funciones de SQL.


9. 💡 Buenas Prácticas y Consejos


Este cheatsheet te proporciona una referencia completa de JPQL, cubriendo sus conceptos esenciales, sintaxis básica, operaciones SELECT/DML, JOINS, subconsultas, funciones y las mejores prácticas para escribir consultas orientadas a objetos eficientes y portátiles en tus aplicaciones JPA.