
[ad_1]
Para novos usuários que trabalham com o jOOQ pela primeira vez, o número de tipos na API do jOOQ pode ser impressionante. A linguagem SQL não tem muitos desses tipos “visíveis”, embora se você pensar em SQL da mesma forma que o jOOQ pensa, eles estarão lá da mesma forma, mas ocultos dos usuários por meio de uma sintaxe de estilo inglês.
Esta visão geral listará os tipos de jOOQ mais importantes em um formulário de folha de dicas.
Tipos de configuração
o Configuration
é o tipo de configuração mais importante, que contém referências a todos os outros tipos de configuração, Settings
implementações SPI personalizadas, JDBC ou R2DBC Connection
etc. SPIs incluem:
E muito mais, que você pode conferir no Configuration
Javadoc
É disponibilizado a partir de cada Scope
tipo na API, veja abaixo para detalhes
Escopos
o Scope
tipos são vários tipos que são criados “no escopo” de um Configuration
e como tal pode fornecer acesso a todos os Configuration
contém objetos e SPIs. Esse design permite injeção de dependência programática extremamente flexível em todas as partes internas do jOOQ. Alguns dos mais importantes Scope
os tipos incluem:
Para outros tipos, consulte o Scope
Javadoc.
Definições
Settings
são principalmente sinalizadores escalares que especificam o comportamento detalhado no jOOQ. Alguns exemplos selecionados incluem:
A partir do jOOQ 3.17, existem mais de 160 dessas configurações, então não podemos listá-las todas aqui. Para mais detalhes, consulte o Settings
Javadoc.
tipos de DSL
A API DSL é a API mais importante para trabalhar com jOOQ. Vem em 2 sabores.
A DSL estática
a estática DSL
contém pontos de entrada para todos os tipos de QueryPart
DSLs de construção, incluindo:
… e muito mais. Todos esses tipos são construídos estaticamente e, como tal, não possuem Configuration
em anexo.
A DSL de “contexto”
O “contexto” DSL, representado pelo DSLContext
tipo, só oferece construção QueryPart
tipos que lucram por serem criados “no contexto” de um Configuration
. Isso inclui principalmente:
UMA Query
que foi construído a partir do DSLContext
tipo pode ser executado diretamente usando Query.execute()
ou ResultQuery.fetch()
ou muitos outros métodos de execução, incluindo os assíncronos ou reativos.
Tipos de passos
Em toda a API DSL, você verá os chamados tipos “Step”, ou seja, tipos com um sufixo “Step”, como por exemplo SelectFromStep
que é o “Passo” que dá acesso ao Select
DSLs FROM
cláusula.
Você nunca deve fazer referência a esses tipos diretamente, nem vê-los em seu próprio código. Eles são artefatos DSL intermediários
Tipos de QueryPart
QueryPart
é o tipo base comum de toda a árvore de expressão jOOQ ou API de modelo. Cada tipo que você construir com a API DSL estenderá QueryPart
por exemplo:
QueryPart p1 = TABLE;
QueryPart p2 = TABLE.COLUMN;
QueryPart p3 = TABLE.COLUMN.eq(1);
As expressões acima produzem um tipo mais específico do que QueryPart
que explicaremos depois, mas todos eles se estendem QueryPart
.
UMA QueryPart
é um tipo que pode ser renderizado no contexto de um Configuration
usando DSLContext::render
String sql = ctx.render(TABLE.COLUMN.eq(1));
O mais importante QueryPart
subtipos incluem:
Mesa
UMA
pode ser usado em um Table
FROM
cláusula de um SELECT
instrução ou como destino de uma instrução DML e muito mais. Existem vários tipos diferentes de tabelas, incluindo:
Há muito mais expressões de tabela possíveis no jOOQ, todas implementando o
modelo. Um exemplo de uso Table
Table
expressões é:
Table<?> joined = CUSTOMER
.join(ADDRESS)
.on(ADDRESS.CUSTOMER_ID.eq(CUSTOMER.CUSTOMER_ID));
Embora a maioria das instruções jOOQ não funcionem com essas variáveis locais, é sempre interessante lembrar que, com jOOQ, cada consulta é uma consulta SQL dinâmica e cada fragmento SQL é uma árvore de expressão totalmente independente em Java, que pode ser atribuída a qualquer variável local ou retornada de um método, etc.
Campo
UMA
é uma expressão de coluna, que pode ser usada em vários lugares na API do jOOQ, em todos os lugares onde as expressões de coluna podem ser usadas, incluindo:Field
E muito mais.
Doença
UMA Condition
é apenas um Field<Boolean>
com alguma API adicional específica para Condition
edifício, incluindo a possibilidade de chamar Condition::and
, Condition::or
, e outros. Várias cláusulas aceitam Condition
explicitamente, incluindo:
E mais.
Fileira
UMA Row
ou expressão de valor de linha é usada para modelar uma tupla de valores para:
Tais tuplas são úteis para criar um tipo estrutural que agrupa
expressões em grupos de objetos reutilizáveis. Alguns dialetos também suportam variantes nominais disso, chamadas UDT (User Defined Type), e o jOOQ pode emular UDTs por meio de tipos incorporáveis.Field
Selecione
UMA Select
é um tipo especial de ResultQuery
que pode ser usado como:
Consulta de resultados
UMA ResultQuery
é um Query
que pode produzir Record
valores em várias formas de cobrança (ex. Stream
, Result
, Publisher
, CompletionStage
, etc). Pode ser criado a partir de vários Query
tipos adicionando o RETURNING
cláusula
Consulta
UMA Query
é um Statement
que pode ser executado, ou seja:
- Uma string SQL é gerada
- UMA
PreparedStatement
está preparado - Os valores de ligação são vinculados
- o
PreparedStatement
É executado - Possivelmente, um
ResultSet
é buscado.
Para executar um Query
deve ser anexado a um Configuration
o que é feito mais facilmente criando o Query
a partir de um
.DSLContext
Declaração
UMA Statement
(não o JDBC Statement
!) é um QueryPart
que representa uma declaração processual em:
Tudo
implementações podem ser usadas como Query
em tal contexto processual.Statement
Tipos de QOM
o QOM
Os tipos (Modelo de objeto de consulta) são um conjunto experimental de tipos que declaram publicamente a API do modelo interno, o que é muito útil para passagem de árvore e transformação SQL
Tipos de resultados
Ao executar um ResultQuery
existem diferentes tipos de
apoiado por jOOQ, Result
Result
sendo o padrão:
Resultado
o Result
tipo é um List<Record>
com muita API de conveniência de mapeamento. Ele modela um JDBC ansiosamente buscado ResultSet
que contém todos os resultados do banco de dados e não mais referência ao ResultSet
em si. Isso é útil quando o conjunto de resultados é de tamanho moderado.
Cursor
o Cursor
tipo é um Iterable<
com API de conveniência de mapeamento semelhante à Record
>Result
tipo, mas contém um JDBC aberto ResultSet
, permitindo buscar dados do servidor de forma preguiçosa. Isso é útil quando o conjunto de resultados é enorme.
Registro
UMA
é um tipo base para um registro de banco de dados. Ele permite acesso baseado em campo de atributos individuais, bem como conveniência de mapeamento em tipos de dados personalizados. É especializado como:Record
Marcar isso
Achou esta lista útil? Marque-o como favorito, pois adicionaremos mais tipos no futuro, caso surjam novos conceitos importantes.
[ad_2]
Source link