La consulta orientada a objetos jOOQ , comúnmente conocida como jOOQ , es una biblioteca ligera de software de mapeo de bases de datos en Java que implementa el patrón de registro activo . Su propósito es ser tanto relacional como orientado a objetos al proporcionar un lenguaje específico de dominio para construir consultas a partir de clases generadas a partir de un esquema de base de datos . [ cita requerida ]
Desarrollador (es) | Data Geekery GmbH |
---|---|
Lanzamiento estable | 3.14.8 / 26 de febrero de 2021 [1] |
Repositorio | github |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Plataforma | Java |
Tipo | Mapeo relacional de objetos |
Licencia | Licencia doble: ASL 2.0 y comercial |
Sitio web | www |
Paradigma
jOOQ afirma que SQL debería ser lo primero en cualquier integración de base 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 usa JDBC para llamar a las consultas SQL subyacentes. [ cita requerida ]
Si bien proporciona abstracción además de JDBC, jOOQ no tiene tanta funcionalidad y complejidad como las bibliotecas de mapeo relacional de objetos estándar como EclipseLink o Hibernate . [ cita requerida ]
La cercanía de jOOQ con SQL tiene ventajas sobre las típicas bibliotecas de mapeo relacional de objetos. [ cita requerida ] SQL tiene muchas características que no se pueden utilizar en un paradigma de programación orientada a objetos ; este conjunto de diferencias se denomina desajuste de impedancia relacional de objeto . Al estar cerca de SQL, jOOQ ayuda a prevenir errores de sintaxis y problemas de mapeo de tipos. [ cita requerida ] Además, se cuida la vinculación de variables. También es posible en jOOQ crear consultas muy complejas, que involucran aliasing, uniones , selecciones anidadas y uniones complejas . jOOQ también admite funciones específicas de la base de datos, como UDT , tipos de enumeración , procedimientos almacenados y funciones nativas. [ cita requerida ]
Ejemplo
Una consulta anidada que se selecciona de una tabla con alias
- Seleccionar autores con libros agotados SELECCIONAR * DEL AUTOR a DONDE EXISTE ( SELECCIONAR 1 DEL LIBRO DONDE RESERVA . ESTADO = 'AGOTADO' Y LIBRO . AUTHOR_ID = a . ID );
Y su equivalente en jOOQ DSL:
// Usa la tabla con alias en la instrucción select create . selectFrom ( tabla ( "AUTOR" ). as ( "a" )) . donde ( existe ( selectOne () . from ( tabla ( "LIBRO" )) . donde ( campo ( "LIBRO.STATUS" ). igual ( campo ( "LIBRO_STATUS.SOLD_OUT" ))) . y ( campo ( "LIBRO.ID DE AUTOR " ). igual ( campo ( " a.ID " )))));
O más simplemente, usando la generación de código a partir de los metadatos de la base de datos para generar constantes:
// Utilice la tabla con alias en la sentencia de selección final Author a = AUTHOR . como ( "a" ); crear . seleccione de ( a ) . donde ( existe ( selectOne () . from ( BOOK ) . where ( BOOK . STATUS . equal ( BOOK_STATUS . SOLD_OUT )) . y ( BOOK . AUTHOR_ID . equal ( a . ID ))));
Ver también
Referencias
- ^ "Lanzamientos · jOOQ / jOOQ" . github.com . Consultado el 13 de abril de 2021 .