Lanzamiento de jOOQ 3.14 con compatibilidad con SQL/XML y SQL/JSON: Java, SQL y jOOQ.

jOOQ 3.14 se ha lanzado con soporte para SQL/XML, SQL/JSON, generación de código Kotlin, tipos integrables y tipos de dominio, restricciones sintéticas, mejor soporte MERGE y más transformaciones de SQL.

En esta versión, hemos ordenado nuestros problemas de github en función de los comentarios de los usuarios y
finalmente implementó algunas de las características más buscadas, que incluyen mejores
Compatibilidad con Kotlin, tipos integrables y compatibilidad con tipos de dominio.

Además de eso, creemos que nuestra operación XML y JSON recién agregada
el soporte cambiará las reglas del juego en la forma en que los ORM interactúan con las bases de datos SQL
en el futuro.

XML y JSON

SQL estándar ha sido compatible durante mucho tiempo con SQL/XML y, más recientemente, con la mayoría de los RDBMS.
admite SQL/JSON estándar o sus variantes específicas del proveedor. Mientras ORDBMS
Las extensiones nunca han tenido la adopción que merecen, a diferencia de XML y JSON. Esto hace
bueno para desnormalizar ocasionalmente los datos y almacenar los documentos en la base de datos
directamente. Sin embargo, esto no es lo que más nos emociona.

Estamos encantados de apoyar a todos los operadores sofisticados como:

  • JSON_TABLE para transformar valores JSON en tablas SQL
  • JSON_ARRAY, JSON_OBJECT, JSON_VALUE para construir datos JSON a partir de valores
  • JSON_ARRAYAGG, JSON_OBJECTAGG para agregar datos en documentos JSON anidados
  • JSON_EXISTS para consultar documentos con ruta JSON

Hay funciones similares disponibles para XML, como XMLTABLE, XMLELEMENT, XMLAGG, etc.
Todas las ediciones de jOOQ 3.14 admiten operadores SQL XML y JSON estándar, y
emítelos donde haya soporte no estándar disponible (por ejemplo, PostgreSQL y SQL
Servidor).

Las ediciones comerciales también admiten los prácticos FOR XML y SQL Server de SQL Server.
FOR JSON API, emulando esta sintaxis usando operadores estándar en otros lugares. Ver:

Uso de la sintaxis de SQL Server FOR XML y FOR JSON en otros RDBMS con jOOQ

Pero eso no es todo ! Si tiene a Gson, Jackson o JAXB en el classpath,
podemos usarlo para mapear tipos org.jooq.XML, org.jooq.JSON, org.jooq.JSONB de
sus resultados de consulta a sus estructuras de datos anidados, automáticamente. Ver:

Colecciones anidadas con compatibilidad con jOOQ 3.14 SQL/XML o SQL/JSON

Estos enfoques son extremadamente poderosos. En muchos casos, simplemente puede ignorar
la mayor parte de su capa de middleware y vincule un punto final REST o similar directamente a un
Consulta jOOQ / SQL, produciendo JSON para su interfaz:

Deje de mapear elementos en su middleware. Utilice los operadores XML o JSON de SQL en su lugar

Soporte técnico de Kotlin

Durante mucho tiempo hemos admitido algunas extensiones de Scala y un ScalaGenerator. Kotlin es un
Lenguaje JVM adicional muy prometedor donde un nuevo módulo jOOQ-kotlin, así como
un KotlinGenerator agregará mucho valor a su integración jOOQ/Kotlin.

KotlinGenerator ofrece, entre otras cosas:

  • Soporte de clase de datos para POJO generados
  • Compatibilidad con propiedades para POJO, interfaces y registros generados
  • Mejor apoyo a la nulidad

El módulo jOOQ-kotlin ofrece algunas funciones de extensión útiles para mejorar aún más
Experiencia de integración de jOOQ/Kotlin.

Además de lo anterior, hemos anotado toda la API de jOOQ con anulabilidad
Anotaciones de JetBrains:

  • org.jetbrains.anotaciones.Nullable
  • org.jetbrains.annotations.NotNull

¡Esto eliminará muchas T molestas! escribe tu código Kotlin/jOOQ,
transformarlos en T o T? en su lugar, dándote más confianza.

Junto con estas mejoras, también hemos revisado críticamente nuestra
ScalaGenerator, corrigiendo muchos errores.

Tipos integrables

Una de las características nuevas más importantes de jOOQ 3.14 está inspirada en JPA, que incorpora
con tipos integrables. Un tipo integrable es una emulación de un usuario de base de datos.
tipo definido (UDT), que solo se admiten de forma nativa en Oracle y PostgreSQL.
La mayor ventaja de estos tipos es crear más tipos de datos semánticos y compuestos.
en el esquema de su base de datos y aproveche la seguridad de tipo adicional.

Nuestra interpretación de la funcionalidad está principalmente en el generador de código fuente, del cual
la producción ahora se vuelve aún más valiosa. Todas las ediciones de jOOQ son compatibles con la base
infraestructura para hacer coincidir conjuntos de columnas y convertirlas en sintéticas
tipos integrables.

Además de lo anterior, nuestras ediciones comerciales ofrecen configuración automática
de tipos empotrables en casos donde realmente brillan:

  • Para restricciones primarias/únicas y sus claves foráneas correspondientes
  • Para tipos de DOMINIO (ver más abajo)
  • Manejo de tipos incrustables superpuestos
  • Permitir que los tipos incrustables anulen sus columnas subyacentes

Llevamos el concepto un paso más allá que JPA. En jOOQ, los tipos integrables pueden actuar
como vistas en las columnas subyacentes, sin reemplazarlas o reemplazarlas
como en JPA. jOOQ respeta todos los niveles de modelado relacional, incluidos
superposición de restricciones y, por lo tanto, permitir que dos tipos integrables se superpongan.

Para obtener más información, consulte:

https://www.jooq.org/doc/3.14/manual/code-generation/codegen-embeddable-types/

tipo de DOMINIO

Hablando de tipos, algunos dialectos de bases de datos admiten tipos de DOMINIO SQL estándar,
que son una forma más simple de UDT. En lugar de trabajar con técnicos de bajo nivel
tipos como VARCHAR (10), ¿por qué no le da un nombre a sus tipos de columna única y agrega
algunas restricciones CHECK reutilizables?

Esto es lo que es un tipo de DOMINIO:

  • Un tipo llamado
  • Aliasing de un tipo técnico, como VARCHAR(10)
  • Posible adición de una expresión DEFAULT
  • Posible adición de una restricción NOT NULL
  • Adición opcional de un conjunto de restricciones CHECK

Todo lo anterior es reutilizable en su esquema y si está comercialmente
bajo licencia, incluso puede hacer que el generador de código genere automáticamente tipos incrustables
para que todos tus dominios se beneficien de la seguridad adicional de tipos en Java.

Para obtener más información, consulte:

Restricciones sintéticas

Relacionados con la salida del generador de código mejorado anterior están los objetos sintéticos,
como claves primarias sintéticas admitidas anteriormente, y ahora también sintéticas
Claves únicas y foráneas.

Si invierte mucho en la seguridad y los componentes reutilizables de su base de datos,
hará un uso intensivo de las vistas SQL. Desafortunadamente, las vistas no tienen meta
datos como restricciones de clave externa, aunque los metadatos son "obvios" para usted
el diseñador de la base de datos. Con restricciones sintéticas, puede decirle a jOOQ su
conocimiento de las limitaciones subyacentes.

Las principales ventajas de los metadatos disponibles para jOOQ son:

  • Ahora también puede usar uniones implícitas en vistas
  • Ahora también puede usar la sintaxis JOIN .. ON KEY en las vistas
  • Puede usar tipos de claves incrustables de antes tanto en vistas como en tablas

Para obtener más información, consulte:

Mejor soporte para MERGE

Finalmente cubrimos el soporte para cláusulas de declaración MERGE más avanzadas y ahora
Apoyo:

  • Cláusulas de condiciones múltiples CUANDO COINCIDEN Y LUEGO ACTUALIZAN
  • Múltiples cláusulas WHEN MATCHED AND THEN DELETE
  • UpdatebleRecord.merge() y todas las ventajas relacionadas para simplificar la combinación de registros

Transformaciones

Con el analizador y nuestra herramienta de traducción (https://www.jooq.org/translate), vamos a
invertir más y más en nuevos casos de uso para usar jOOQ que no sea como un
DSL integrable en Java.

Nuestras capacidades de traducción ya son sólidas y con un nuevo conjunto de SQL
transformaciones, se vuelven aún más fuertes al ayudar a los clientes a migrar de RDBMS A
a RDBMS B (y viceversa, si cometieron un error).

Aunque nuestro traductor de sitios web es gratuito, la biblioteca jOOQ todavía puede ser
utilizado mediante programación o como una utilidad de línea de comandos:

https://www.jooq.org/doc/3.14/manual/sql-building/sql-parser/sql-parser-cli/

Para que este caso de uso sea aún más útil, se han incorporado nuevas funciones de transformación.
añadido, incluyendo:

  • ROWNUM en LIMIT o en ROW_NUMBER()
  • Listas de tablas para ANSI JOIN (incluida la compatibilidad con Oracle (+))
  • Expresiones aritméticas innecesarias

Esta es un área emocionante que exploraremos para nuestras licencias comerciales.
clientes en el futuro, mientras que incluso la edición de código abierto jOOQ disfruta
estas mejoras. Por ejemplo, la infraestructura creada para las transformaciones
finalmente habilitó la emulación de la cláusula DISTINCT ON de PostgreSQL, en otro lugar.

Para obtener más información, consulte:

mejor libro de texto

Dimos un paso atrás y revisamos algunas partes importantes de nuestra documentación.
Ahora ofrecemos:

  • Pestañas adhesivas para técnicas de generación de código (XML, Programática, Gradle): Si
    está utilizando Gradle con el generador de código de jOOQ, no desea ver el
    Configuración XML de nuevo, en el manual. Estas pestañas finalmente ocultan elementos innecesarios
    información.
  • Subsecciones para cada función: empezamos a documentar cada función SQL
    individualmente, explicando cómo funciona en SQL y proporcionando algunos ejemplos y
    ejemplos de resultados.
  • Genere un ejemplo de representación de SQL específico del proveedor: Usamos jOOQ cuando
    generar el manual, traducir algunos usos de jOOQ API a todos nuestros soportes
    dialectos y mostrando la representación de la función en cada dialecto.
  • Mostrar botón de importaciones y mostrar importaciones contextuales: todos los ejemplos en
    el manual puede ser abrumador. Suponemos un gran número de importaciones (estáticas),
    que finalmente documentamos en una sección expandible de "mostrar importaciones" de
    cada pieza de código.
  • Hemos reescrito algunas secciones para que sean mucho más completas con ejemplos, como
    la sección de importación de datos.
  • Una nueva página de comparación de API muestra qué cambió entre cada versión secundaria en
    Términos de la lista de enlaces Javadoc: https://www.jooq.org/api-diff

Si quieres conocer otros artículos parecidos a Lanzamiento de jOOQ 3.14 con compatibilidad con SQL/XML y SQL/JSON: Java, SQL y jOOQ. puedes visitar la categoría Código.

Deja un comentario

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

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas