jOOQ (Object Oriented Querying) , comúnmente conocido como jOOQ , es una biblioteca de software ligera para el mapeo de bases de datos en Java que implementa el patrón Active Record . Su propósito es ser tanto relacional como orientado a objetos , proporcionando un lenguaje específico de dominio para construir consultas a partir de clases generadas a partir de un esquema de base de datos .
Paradigma
jOOQ afirma que SQL debe ser la prioridad en cualquier integración de bases de datos. Por lo tanto, no introduce un nuevo lenguaje de consulta textual , sino que permite construir SQL simple a partir de objetos jOOQ y código generado a partir de un esquema de base de datos. jOOQ utiliza JDBC para invocar las consultas SQL subyacentes.
Si bien jOOQ proporciona una abstracción sobre JDBC, no tiene tanta funcionalidad ni complejidad como las bibliotecas de mapeo objeto-relacional estándar , como EclipseLink o Hibernate .
La similitud de jOOQ con SQL ofrece ventajas sobre las bibliotecas de mapeo objeto-relacional convencionales. SQL posee numerosas características que no pueden utilizarse en un paradigma de programación orientada a objetos ; este conjunto de diferencias se conoce como incompatibilidad objeto-relacional . Gracias a su similitud con SQL, jOOQ ayuda a prevenir errores de sintaxis y problemas de mapeo de tipos. Además, se gestiona la vinculación de variables. En jOOQ también es posible crear consultas muy complejas que incluyen alias, uniones , selecciones anidadas y combinaciones complejas . jOOQ también admite características específicas de bases de datos, como tipos definidos por el usuario (UDT) , tipos enum , procedimientos almacenados y funciones nativas.
Ejemplo
Una consulta anidada que selecciona datos de una tabla con alias.
-- Seleccionar autores con libros agotados SELECT * FROM AUTHOR a WHERE EXISTS ( SELECT 1 FROM BOOK WHERE BOOK . STATUS = 'SOLD OUT' AND BOOK . AUTHOR_ID = a . ID );Y su equivalente en jOOQ DSL:
// Utilice la tabla con alias en la instrucción select create . selectFrom ( table ( "AUTHOR" ). as ( "a" )) . where ( exists ( selectOne () . from ( table ( "BOOK" )) . where ( field ( "BOOK.STATUS" ). equal ( field ( "BOOK_STATUS.SOLD_OUT" ))) . and ( field ( "BOOK.AUTHOR_ID" ). equal ( field ( "a.ID" )))));O, más sencillamente, utilizando la generación de código a partir de los metadatos de la base de datos para generar constantes:
// Utilizar la tabla con alias en la instrucción select final Author a = AUTHOR . as ( "a" );crear . seleccionarDe ( a ) . donde ( existe ( seleccionarUno () . de ( LIBRO ) . donde ( LIBRO . ESTADO . igual ( LIBRO_ESTADO . AGOTADO )) . y ( LIBRO . ID DE AUTOR . igual ( a . ID ))));Véase también
Referencias
- ↑ "Tags · jOOQ/jOOQ" . github.com . Consultado el 06-08-2025 .
Enlaces externos
- jOOQ Inicio
- Uso de Spring Boot con jOOQ
- JSR-341 Archivado el 12/04/2016 en Wayback Machine
- JaQu archivado el 5 de mayo de 2021 en Wayback Machine.
- Linq4j
- Quaere
- Consulta DSL
- Mapeo objeto-relacional
- Bibliotecas de Java (lenguaje de programación)
- Plataforma empresarial Java
