Hibernate - Critérios vs consulta nomeada
Estou tentando compararCritérios de hibernação para consultas nomeadas para desempenho. Estou ciente de que tudo depende da consulta real e a última palavra é sobre como eles perfilam em tempo de execução. ainda assim, tentando resolver o que se passa em cada um.
Eu tentei organizar o Q em duas partes e procurando verificação / correção em ambas:
PARTE 1 - como os Critérios de Hibernação e as consultas nomeadas funcionam basicamente:
Critérios trabalha com parâmetros. No tempo de execução, a consulta não precisa ser analisada - possui vários parâmetros de pesquisa e "presente no formulário", como ordem dos resultados, retorno como rolagem etc. Não foram lidos / verificados, mas os Critérios funcionam por índices nos campos (com base nos parâmetros definidos neles) para tornar tudo mais rápido.
Portanto, a vantagem dos Critérios em comparação com o HQL comum é sua velocidade durante a execução.
As consultas nomeadas têm a mesma vantagem sobre o HQL - a consulta é analisada uma vez na inicialização. Em seguida, é executado a partir de onde necessário no aplicativo.
PARTE 2 - comparando os dois:
Então nesta foto,
como critérios e consultas nomeadas se comparam?
Os critérios funcionam bem para consultas complicadas em várias tabelas e vários parâmetros - tem os meios para otimizar e, assim, tornar a consulta rápida (?)
as consultas nomeadas têm a vantagem de "definir uma vez use em qualquer lugar" e são ótimas para consultas "leves" - pesquisas menos complicadas com pequena quantidade de parâmetros normalmente em uma única tabela. ainda melhor em consultas frequentes.
Nota: visto o muito útilCritérios de Hibernação vs HQL: qual é mais rápido? entre algumas outras discussões.
TIA.