Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 16 Próxima »

O Cronapp utiliza um assistente de consulta visual que facilita a criação de consultas ao banco de dados.

Visão Geral 

As consultas são realizadas em JPQL (Java Persistence Query Language), que é uma linguagem de consulta ORM que atua sobre classes e objetos, diferentemente do SQL que realiza as consultas baseadas em tabelas. Apesar de a diferença estrutural a linguagem JPQL é bem semelhante ao SQL, porém a primeira possui a vantagem de que a mesma consulta pode ser realizada em todos os bancos de dados. O JPQL conta também com o assistente de consulta visual que tem como objetivo facilitar a criação de consultas ao banco de dados, além de gerar as consultas o assistente possui algumas outras funcionalidades como as exibidas abaixo: 

Figura 1 - Assistente de consulta visual (Bloco de programação)


  1. Estrutura de Consulta - Possui as opções de criação da consulta, como adicionar a entidade desejada, selecionar campos desejados na consulta, criar regras e outros.
  2. Testar Consulta - Realiza o teste da consulta criada e retorna os dados correspondentes a ela em uma nova janela.
  3. Editar como Texto - Faz a edição da consulta visual em formato de texto.
  4. Visualizar como Texto - Exibe a consulta feita em formato visual em forma de texto.
  5. Modo de Consulta - Altera a estrutura da consulta, que pode ser por tabelas ou objetos. 
  6. Aplicar dados da requisição - Aplica as requisições(paginação, ordenação e outros) diretamente na consulta.
  7. Habilitar Paginação - Realiza a paginação dos dados em uma página de forma automática.   
  8. Ok e Cancelar - Cancela ou salva a consulta.

Estrutura da consulta

Agora vamos entender melhor as opções disponíveis na estrutura da consulta. 

Figura 2 - Estrutura visual da consulta

  1. Entidade - Define a entidade a ser utilizada na consulta.
  2. Campos - Define quais campos da entidade serão retornados na consulta.
  3. Regra - Adiciona uma regra para filtrar os itens buscados.
  4. Agrupar - Agrupa os itens de acordo com um campo específico ( Ex: Agrupar cidades por estado). 
  5. Having -  Cria uma regra de consulta para ser utilizada junto com o agrupar ( Ex: Agrupar cidades por estado e exibir somente as cidades com mais de 100 mil habitantes).
  6. Ordenar - Ordena os itens com base em no campo informado (Ex: Ordenar os itens com base no número do Id).


Passos

No nosso exemplo temos uma classe Cidade na qual será realizada uma consulta visual, para abrir o assistente de consultas clique no ícone de configuração do bloco Abrir consulta.

Observe a estrutura da consulta conforme a figuras 3 e 3.1: 

Figura 3 - Entidade e campos selecionados na consulta


3.1 - Definição da ordenação dos itens consultados

Siga os passos abaixo para obter a consulta das figuras 3 e 3.1: 

  1. Entidade: Na propriedade entidade, clique no "..." e selecione a entidade desejada na consulta, após isso clique em "Adicionar". Nesse caso a entidade utilizada foi a Cidade que está sendo representada como 'c'.
  2. Campos: Na propriedade campos, clique em "Novo Campo" e em seguida selecione o campo que deseja trazer na consulta , nesse exemplo utilizamos o campo estado (Para adicionar novos campos basta repetir o processo, ou se desejar trazer todos os campos selecione o objeto inteiro. No exemplo atual para trazer todos os campos seria necessário selecionar o campo 'c').
  3. Regra: Na propriedade regra, clique em "Nova Regra" e selecione um filtro para a consulta (Ex: Selecionar os campos em que o id seja maior que 1). No exemplo atual a quantidade de habitantes deve ser diferente do valor do parâmetro 'minimo'.
  4. Agrupar: Na propriedade agrupar, clique em "Novo Campo" e selecione o campo pelo qual os itens devem ser agrupados, nesse exemplo os itens são agrupados por estado.
  5. Having: Na propriedade having, clique em "Novo Campo" e informe uma nova regra para a consulta, porém a regra utilizada em having possui opções diferentes da propriedade regra (São utilizados as opções Sum, Avg, Min, Max, Count). Em nosso exemplo, a soma da quantidade de habitantes dos estados deve ser maior que o valor do parâmetro 'quantidadeHabitantes' ( Lembrando que a propriedade having funciona em conjunto com a propriedade agrupar, primeiro os itens são agrupados e o having é aplicado nos grupos).
  6. Ordenar: Na propriedade ordenar, clique em "Novo Campo" e selecione o campo pelo qual deseja ordenar e em qual ordem(Ascendente ou Descendente), nessa situação utilizamos o campo estado e a opção Asc (Ascendente).
  7. Selecione a opção "Ok" para salvar a consulta.

Exemplo da mesma consulta feita em SQL:

Consulta figuras 3 e 3.1
SELECT estado FROM   cidade 
WHERE  quantidadehabitantes > minimo 
GROUP  BY estado 
HAVING Sum(quantidadehabitantes) > quantidadehabitantes 
ORDER  BY estado ASC 


Realizando consultas entre duas tabelas

É possível também realizar consultas entre mais de uma tabela. No exemplo abaixo, iremos retornar o nome dos países em que as cidades possuem mais de 50 mil habitantes e a soma dos habitantes de todas as cidades do país devem ser iguais ou superiores a 1 milhão.


Figura 4 - Consulta visual JPQL (Bloco de programação)

Siga os passos abaixo para obter a consulta da figura 4:

  1. Entidade:  Na propriedade entidade, utilizamos a entidade Cidade que é representada como 'c'.
  2. Campos: Na propriedade campos, selecionamos a opção 'c.pais.nome' para podermos retornar o nome do país em que a cidade está relacionada.
  3. Regra: Nessa propriedade a regra definida foi que a quantidade de habitantes das cidades retornadas deve ser maior que 0.
  4. Agrupar: Os itens foram agrupados por país pelo campo 'c.pais.nome'.
  5. Having: Na propriedade having, a regra definida foi que o número de habitantes dos países(O atributo utilizado no exemplo foi o 'c.quantidadeHabitantes', mas como as cidades estão agrupadas por país considera-se que essa soma dos habitantes das cidades representa o total de habitantes do país) deve ser maior ou igual a 1 milhão.


Consulta figura 4
SELECT c.fk_pais, p.nomeFROM Cidade as c INNER JOIN Pais as pON p.id = c.fk_paisWHERE c.quantidadeHabitantes > 0GROUP BY p.nomeHAVING SUM(c.quantidadeHabitantes) > 1000000

Fonte de dados VS Bloco de programação

Existem algumas diferenças entre o assistente de consulta JPQL da fonte de dados e o do bloco de programação. 


Figura 5 - Consulta visual JPQL (Bloco de programação)

 


Figura 5.1 - Consulta visual JPQL (Fonte de dados) 


O assistente visual do bloco de programação possui duas funcionalidades a mais que o assistente visual da fonte de dados. São elas, Aplicar Dados da Requisição e Habilitar Paginação.







  • Sem rótulos