Una breve descripción de los tipos más comunes de jOOQ: Java, SQL y jOOQ.

Para los nuevos usuarios que trabajan con jOOQ por primera vez, la cantidad de tipos en la API de jOOQ puede ser abrumadora. El lenguaje SQL no tiene muchos tipos "visibles", aunque si piensa en SQL como jOOQ, están ahí de todos modos, pero ocultos para los usuarios a través de una sintaxis de estilo inglés.

Esta descripción general enumera los tipos de jOOQ más importantes en forma de hoja de trucos.

Índice
  1. Tipos de configuración
    1. Campos de aplicación
    2. Ajustes
  2. tipos de DSL
    1. ADSL estático
    2. El DSL "contextual"
    3. tipos de pasos
  3. Tipos de elementos de consulta
    1. Mesa
    2. Campo
    3. Condición
    4. Línea
    5. Seleccione
    6. consulta de resultado
    7. Consulta
    8. Declaración
  4. Tipos de QOM
  5. Tipos de resultados
    1. Resultados
    2. el cursor
    3. Registro
  6. Agrega esto a tus favoritos
    1. Así:

Tipos de configuración

los Configuration es el tipo de configuración más importante, que contiene referencias a todos los demás tipos de configuración, Settingsimplementaciones personalizadas de SPI, JDBC o R2DBC Connectionetc. Los SPI incluyen:

Y muchos más, que puedes ver en la Configuration Javadoc

Está disponible para cada Scope ingrese la API, vea a continuación para más detalles

Campos de aplicación

los Scope tipos son varios tipos que se crean "como parte de" un Configurationy como tal puede proporcionar acceso a todos Configurationcontiene objetos y SPI. Este diseño permite una inyección de dependencia programática extremadamente flexible en las partes internas de jOOQ. Algunos de los más importantes Scope los tipos incluyen:

Para otros tipos, consulte Scope Javadoc.

Ajustes

Settings son en su mayoría indicadores escalares que especifican un comportamiento detallado en jOOQ. Algunos ejemplos seleccionados incluyen:

A partir de jOOQ 3.17, hay más de 160 de estos parámetros, por lo que no podemos enumerarlos todos aquí. Para obtener más detalles, consulte el Settings Javadoc.

tipos de DSL

La API de DSL es la API más importante para trabajar con jOOQ. Viene en 2 sabores.

ADSL estático

la estática DSL contiene puntos de entrada para cada tipo de QueryPart Construcción de DSL que incluye:

… y mucho más. Todos estos tipos están construidos estáticamente y, como tales, no tienen Configuration adjunto

El DSL "contextual"

El DSL de "contexto", representado por el DSLContext tipo, solo ofrece la construcción QueryPart tipos que se benefician de ser creados "en el contexto" de un Configuration. Esto es principalmente para incluir:

A Query que fue construido a partir de DSLContext El tipo se puede ejecutar directamente usando Query.execute() Dónde ResultQuery.fetch()o muchos otros métodos de ejecución, incluidos los métodos asincrónicos o reactivos.

tipos de pasos

A lo largo de la API de DSL, verá los denominados tipos "Paso", es decir, tipos con un sufijo "Paso", como SelectFromStepque es el “Paso” que da acceso a la Select ADSL FROM cláusula.

Nunca debe hacer referencia a estos tipos directamente ni verlos en su propio código. Estos son artefactos DSL intermedios

Tipos de elementos de consulta

QueryPart es el tipo base común de todo el árbol de expresiones jOOQ o API modelo. Cada tipo que construyas con la API de DSL se extenderá QueryPartpor ejemplo:

QueryPart p1 = TABLE;
QueryPart p2 = TABLE.COLUMN;
QueryPart p3 = TABLE.COLUMN.eq(1);

Las expresiones anteriores producen un tipo más específico que QueryPartque explicaremos más adelante, pero todas se extienden QueryPart.

A QueryPart es un tipo que puede representarse en el contexto de un Configuration usando DSLContext::render

String sql = ctx.render(TABLE.COLUMN.eq(1));

Lo mas importante QueryPart los subtipos incluyen:

Mesa

A Table se puede utilizar en un FROM una cláusula SELECT o como destino de una declaración DML, y más. Existen diferentes tipos de tablas, entre ellas:

Hay muchas otras expresiones de tabla posibles en jOOQ, todas las cuales implementan el Table pegar. Un ejemplo de uso Table expresión es:

Table<?> joined = CUSTOMER
    .join(ADDRESS)
    .on(ADDRESS.CUSTOMER_ID.eq(CUSTOMER.CUSTOMER_ID));

Aunque la mayoría de las declaraciones jOOQ no funcionarán con tales variables locales, aún vale la pena recordar que con jOOQ, cada consulta es una consulta SQL dinámica y cada fragmento SQL es un árbol de expresión completamente autónomo en Java. , que se puede asignar a cualquier variable local o devuelta por un método, etc.

Campo

A Field es una expresión de columna, que se puede usar en muchos lugares en la API de jOOQ, en cualquier lugar donde se puedan usar expresiones de columna, que incluyen:

Y mucho más.

Condición

A Condition es solo uno Field<Boolean> con algunas API adicionales específicas para Condition edificio, incluyendo la posibilidad de llamar Condition::and, Condition::or, Y de otros. Se aceptan varias clausulas Condition explícitamente, incluyendo:

Y más.

Línea

A Row donde la expresión de valor de fila se usa para modelar una tupla de valores a la vez para:

Tales tuplas son útiles para crear un tipo estructural que agrupe Field expresiones en grupos de objetos reutilizables. Algunos dialectos también admiten variaciones nominales de esto, llamados UDT (tipo definido por el usuario), y jOOQ puede emular UDT a través de tipos incrustables.

Seleccione

A Select es un tipo especial de ResultQueryque se puede utilizar como:

consulta de resultado

A ResultQuery es un Query quien puede producir Record valores en diversas formas de recopilación (p. Stream, Result, Publisher, CompletionStage, etc.). Se puede crear a partir de varios Query tipos agregando el RETURNING cláusula

Consulta

A Query es un Statement que se puede ejecutar, es decir:

  • Se genera una cadena SQL
  • A PreparedStatement Esta preparado
  • Los valores vinculantes están vinculados
  • los PreparedStatement es ejecutado
  • Opcionalmente, un ResultSet se recupera

Para ejecutar un Querydebe estar unido a un Configurationque se hace más fácilmente creando el Query de DSLContext.

Declaración

A Statement (no el JDBC Statement!) es un QueryPart que representa una instrucción procesal en:

Todo Query Las implementaciones se pueden utilizar como Statement en tal contexto procesal.

Tipos de QOM

los QOM Types (Query Object Model) es un conjunto experimental de tipos que declaran públicamente la API del modelo interno, que es muy útil para el recorrido de árboles y la transformación de SQL.

Tipos de resultados

Al ejecutar un ResultQueryhay diferentes tipos de Result apoyado por jOOQ, Result siendo el predeterminado:

Resultados

los Result el género es un List<Record> con muchas API de mapeo convenientes. Modela un JDBC ansiosamente buscado ResultSetque contiene todos los resultados de la base de datos y ya no hace referencia a la ResultSet él mismo. Esto es útil cuando el conjunto de resultados es de tamaño mediano.

el cursor

los Cursor el tipo es un Iterable<Record> con una conveniente API de mapeo similar a la de Result tipo, pero contiene un JDBC abierto ResultSet, lo que permite obtener datos del servidor de forma perezosa. Esto es útil cuando el conjunto de resultados es enorme.

Registro

A Record es un tipo base para un registro de base de datos. Permite el acceso basado en campos a atributos individuales, así como la conveniencia de mapear en tipos de datos personalizados. Ella se especializa como:

Agrega esto a tus favoritos

¿Encontraste útil esta lista? Márquelo como favorito, ya que agregaremos más tipos en el futuro en caso de que surjan nuevos conceptos importantes.

Si quieres conocer otros artículos parecidos a Una breve descripción de los tipos más comunes de jOOQ: 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