Documentos de Académico
Documentos de Profesional
Documentos de Cultura
HQL
HIBERNATE QUERY LANGUAGE
Índice
01 Características
03 Ubicación de consultas en SPRING
02 Sintaxis
04 Cuidado con usar SQL con Hibernate
Características
¿Que es HQL (Hibernate Query Language)?
Características de HQL
● Los tipos de datos son los de JAVA.
● Las consultas son independientes del lenguaje SQL
● Las consultas son independientes del modelo de tablas
● Trabaja con clases y atributos
● Se puede tratar con colecciones de JAVA
● Se puede navegar entre distintos objetos en la propia consulta
¿Cómo funciona HQL?
traducción
traducción
Sintaxis
Elementos de HQL
Elementos
Cláusulas from as select where order by group by update delete Insert
count(*)
count(…)
Funciones Agregadas avg sum min max
count(distinct …)
count(all…)
Sub Consultas Consultas dentro de consultas
HQL y su uso en Spring Boot
A continuación te mostramos la estructura y cómo ejecutar una sintaxis HQL para luego poder
invocarla desde Spring Boot
Sintaxis de consulta HQL
Clausula Clase
Elemento con palabras Hace referencia a la clase y no
claves específica de HQL a la tabla de la base de datos.
Atributo de Clase
Hace referencia al atributo de la
clase y no a la columna de la tabla
Mayúsculas
● Las palabras clave del lenguaje NO son
sensibles a Mayúsculas y Minúsculas
@Repository
public interface UsuarioRepository extends JpaRepository<UsuarioModel, Long> {
Método
Expuesto por la Interface
Si la Query posee parámetros, se debe utilizar
[Tipo de dato java] +[nombre de variable]. En este caso lo que en la Query
este en la posición 1 (?1) mapeará con el primer parámetro en este caso name
Consultas: Nombre de Métodos
Como buena práctica crear nombres de métodos siguiendo las siguientes pautas.
reference
Ubicación de
Consultas en
SPRING
¿Donde ubicar las consultas HQL?
1
Usando la Consulta HQL creada en Service @service
public class UsuarioService{
@Autowired
2 UsuarioRepository usuarioRepository;
1- crear la clase UsuarioService public ArrayList<UsuarioModel> obtenerUsuarios(){
return (ArrayList<UsuarioModel>) usuarioRepository.findAll();
2- inyectar dependencia de UsuarioRepository }
3- crear Método para llamar al método de Repository public ArrayList<UsuarioModel> obtenerUsuariosPorNombre(String nombre){
3 return (ArrayList<UsuarioModel>) usuarioRepository.findUsuarioModelByName(nombre);
}