HQL | Introducción

Introducción 

Hibernate Query Language (HQL) es un lenguaje de consulta potente y fácil de aprender, diseñado como una extensión orientada a objetos de SQL que cierra la brecha entre los sistemas orientados a objetos y las bases de datos relacionales. La sintaxis HQL es muy similar a la sintaxis SQL. tiene un lenguaje de consulta orientado a objetos rico y poderoso disponible con Hibernate ORM, que es una técnica de mapeo de objetos a las bases de datos. Los datos de los sistemas orientados a objetos se asignan a bases de datos relacionales con un esquema basado en SQL. 

HQL también se puede utilizar para recuperar objetos de la base de datos a través del mapeo O/R realizando las siguientes tareas: 

  • Aplicar restricciones a las propiedades de los objetos.
  • Organice los resultados devueltos por una consulta utilizando la cláusula order by
  • Paginar los resultados
  • Agregue los registros usando cláusulas group by y being
  • Usar uniones
  • Crear funciones definidas por el usuario
  • Ejecutar subconsultas

El lenguaje de consulta de Hibernate, diseñado como una extensión orientada a objetos «mínima» para SQL, proporciona un puente elegante entre las clases de Java y las tablas de la base de datos. Por lo tanto, es obligatorio comprender la necesidad de HQL en el escenario actual.

Características de HQL 

Las consultas HQL no distinguen entre mayúsculas y minúsculas; sin embargo, los nombres de las clases y propiedades de Java distinguen entre mayúsculas y minúsculas. HQL se utiliza para ejecutar consultas en la base de datos. Si se usa HQL en una aplicación para definir una consulta para una base de datos, el marco de Hibernate genera automáticamente la consulta SQL y la ejecuta. A diferencia de SQL, HQL usa clases y propiedades en lugar de tablas y columnas. HQL admite polimorfismo y asociaciones, lo que a su vez permite a los desarrolladores escribir consultas utilizando menos código en comparación con SQL. Además, HQL admite muchas otras declaraciones SQL y funciones agregadas, como sum() y max() y cláusulas, como group by y order by.

Necesidad de HQL 

Es más beneficioso usar HQL en lugar de SQ nativo para recuperar datos de bases de datos. Las siguientes son algunas de las razones por las que se prefiere HQL a SQL:

  • Proporciona soporte completo para operaciones relacionales. Es posible representar consultas SQL en forma de objetos en HQL que utiliza clases y propiedades en lugar de tablas y columnas.
  • Devuelve los resultados como objetos. En otras palabras, los resultados de la consulta están en forma de objetos en lugar de texto sin formato. Estos objetos se pueden utilizar para manipular o recuperar datos en una aplicación. Esto elimina la necesidad de crear objetos explícitamente y completar los datos del conjunto de resultados recuperado de la ejecución de una consulta.
  • Admite consultas polimórficas. Las consultas polimórficas devuelven los resultados de la consulta junto con todos los objetos secundarios (objetos de subclases), si los hay.
  • Fácil de aprender y usar. La sintaxis de HQL es bastante similar a la de SQL Esto hace que las consultas de Hibernate sean fáciles de aprender e implementar en las aplicaciones.
  • Admite muchas funciones avanzadas en comparación con SQL, como la paginación, la combinación de búsqueda con creación de perfiles dinámicos (la inicialización de las asociaciones o la colección de valores con sus objetos principales se puede realizar mediante una declaración de selección única), uniones internas/externas/completas y producto cartesiano . También es compatible con proyecciones, agregación (máx., promedio), agrupación, ordenación, subconsultas y llamadas a funciones SQL.
  • Proporciona independencia de la base de datos. HQL ayuda a escribir consultas independientes de la base de datos que se convierten a la sintaxis SQL nativa de la base de datos en tiempo de ejecución. Este enfoque ayuda a utilizar las funciones adicionales que proporciona la consulta SQL nativa.

Sintaxis HQL

HQL se considera el lenguaje de consulta más potente diseñado como una extensión mínima orientada a objetos de SQL. Las consultas HQL son fáciles de entender y utilizan nombres de propiedades y clases persistentes, en lugar de nombres de tablas y columnas. HQL consta de los siguientes elementos.

  • Cláusulas (DE, Seleccionar, Dónde, Ordenar por, Agrupar por)
  • Asociaciones y uniones (unión interna, unión externa izquierda, unión externa derecha, unión completa)
  • Funciones agregadas (avg, sum, min, max, count, etc.)
  • Expresiones (operadores matemáticos, comparación binaria, concatenación de strings, función escalar SQL, etc.)
  • Subconsultas (cualquiera, todas, algunas, en)

Consultas HQL

Una consulta dentro de una consulta se conoce como subconsulta y está entre paréntesis. Un ejemplo de una subconsulta es la subselección en la que una cláusula de selección está incrustada en otra cláusula, como la cláusula select, from y where. La subconsulta se ejecuta antes de la ejecución de la consulta principal.

Por ejemplo, la siguiente consulta devuelve artículos en los que todas las ofertas son inferiores a 100.

from Item where 100>all (Seleccione b.cantidad from item.bids b)

Para recuperar los artículos con ofertas superiores a 100, puede utilizar la siguiente consulta:

from Item where 100<all (Seleccione b.cantidad from item.bids b)

Cómo ejecutar HQL

Después de desarrollar los servlets, las páginas JSP y los archivos de configuración, debe almacenarlos en la ubicación adecuada en la estructura de directorios de HibernateApplication. Cree un archivo Web Archive (WAR) y asígnele el nombre HibernateApplication.war. Implemente el archivo HibernateApplication.war en el servidor de aplicaciones GlassFish V3. Después de una implementación exitosa de HibernateApplication, realice los siguientes pasos para ejecutar la aplicación: Abra el navegador web Internet Explorer y escriba la siguiente URL:

http://localhost:8080/HibernateApplication/Myservlet
 

Publicación traducida automáticamente

Artículo escrito por romin_vaghani y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *