Conhecimento relacionado à consulta do Hibernate Tempo: 04/10/2009 07:14:25 Fonte: Internet Autor: Desconhecido Cliques: 146 vezes Primeiro, apresente a diferença entre os métodos get() e load():
A diferença entre o método get() e o método load() reside principalmente no uso do cache de segundo nível.
O método load() usará o cache de segundo nível, e o método get() consultará diretamente o banco de dados se não for encontrado no cache de primeiro nível e não pesquisará no cache de segundo nível.
get(): Se você primeiro introduzir a diferença entre os métodos get() e load() no banco de dados:
A diferença entre o método get() e o método load() reside principalmente no uso do cache de segundo nível.
O método load() usará o cache de segundo nível, e o método get() consultará diretamente o banco de dados se não for encontrado no cache de primeiro nível e não pesquisará no cache de segundo nível.
get(): Se não houver registro no banco de dados, ele retornará nulo. get() retornará dados de qualquer maneira.
load(): Se não houver nenhum registro no banco de dados, uma exceção será lançada. Se houver dados, um objeto proxy será retornado.
Diferença entre os métodos list e iterator(): (N+1?)
Quando o método list() é executado, ele executa diretamente as instruções de consulta necessárias para os resultados da consulta.
O método iterator() primeiro executa a consulta para obter o ID do objeto e, em seguida, obtém o objeto a ser consultado com base em cada valor do ID.
Portanto: Para consultas usando o método list(), apenas uma instrução SQL é normalmente executada, enquanto para consultas usando o método iterator(), pode ser necessário executar N+1 instruções SQL (N é o número de registros no conjunto de resultados ).
Os conjuntos de resultados são processados de maneira diferente:
O método list() ativará todos os objetos do conjunto de resultados de uma vez e inicializará todos os objetos do conjunto de resultados com base nos resultados da consulta. Se o conjunto de resultados for muito grande, ocupará muita memória e até causará estouro de memória.
O método iterator() não inicializa todos os objetos de uma vez durante a execução, mas inicializa objetos com base no acesso ao conjunto de resultados. Você pode controlar o número de objetos no cache durante um acesso para evitar ocupar muito cache e causar estouro de memória.
HQL: HQL é uma linguagem de consulta orientada a objetos. Os objetos operacionais do HQL são classes, instâncias, atributos, etc.
SQL: Os objetos de operação do sql são objetos de dados, como tabelas e colunas de dados.
Hql é uma linguagem de consulta totalmente orientada a objetos, portanto pode oferecer suporte a recursos como herança e vários itens.
A consulta HQL depende da classe Query e cada instância de Query corresponde a um objeto de consulta.
A função de definir parâmetros, a interface de consulta é a verdadeira interface de consulta HQL.
//Cria um objeto de consulta
Consulta consulta = session.createQuery ("do Cliente como c onde c.name=:customerName e c.age=:customerAge");
//Parâmetros de ligação dinâmica
query.setString("nomedocliente","Tom");
query.setInteger("customerAge",21);
//Executa a instrução de consulta e retorna os resultados
Resultado da lista = query.list();
Etapas de consulta HQL:
1: Obtenha o objeto Sessão do Hibernate.
2: Escreva instruções HQL.
3: Use a instrução HQL como parâmetro para chamar o método createQuery de Session para criar um objeto de consulta.
4: Se a instrução HQL contiver parâmetros, chame o método setXXX() de Query para atribuir valores aos parâmetros.
5: Chame a lista e outros métodos do objeto Query para percorrer os resultados da consulta.
A consulta também contém dois métodos:
setFirstResult(int firstResult): Define o registro a partir do qual o conjunto de resultados retornado começa.
setMaxResults(int maxResults): Defina o número de resultados retornados por esta consulta.
Exclusão e atualização de entidade.
Consulta de projeção: consulta apenas parte do atributo.
Consultar um atributo retorna uma string
Consultar dois campos retorna um array
Consulta construída dinamicamente: usada principalmente para dezenas de consultas de tabela;
Para construir um novo objeto, adicione um construtor;
Ao criar um novo objeto, adicione o nome do pacote
Não use count(*), use count(objeto persistente)
Agrupamento e classificação:
A cláusula Order by pode ser ordenada por palavras-chave asc ou desc
Por exemplo: formulário Usuário u Pedido por u.nome asc,u.age desc;
Cláusula de agrupamento por e consulta estatística:
Por exemplo: String hql = "selecione count(u),u.age do grupo User u por u.age tendo count(u)>10";
Lista lista = session.createQuery(hql).list();
Funções agregadas SQL padrão podem ser usadas em instruções HQL, como: count(), sum(), max(), min(), age(), etc.
Consulta de conexão:
Junção interna: junção interna
Junção externa esquerda: junção externa esquerda
Junção externa direita: junção externa direita
Junção completa: junção completa (não comumente usada)
Junção externa urgente: busca de junção externa esquerda, junção esquerda
fetch: usado para obter dados de conexão de uma só vez, especialmente dados de coleta. Reduza o número de interações com o banco de dados.
left out join: Use uma junção externa para realizar uma junção externa. Todos os registros na tabela esquerda e as informações de registro correspondentes da classe de pedido serão exibidos.
right out join: Exatamente o oposto de left out join, right out join retorna todos os registros na tabela direita de HQL e as informações de registro do objeto Cliente correspondentes.
Quatro maneiras de obter dados de coleta:
1: Hibernate.initialize(user.getOrder());
2:user.getOrder().size();
3: Conexão urgente esquerda e direita
4: Filtros avançados
Consultas de critérios: Use objetos para realizar consultas de objetos.
As principais interfaces são: classes Criteria, Criterion, expression_r e Restrictions. Capacidade de suportar geração dinâmica de instruções SQL em tempo de execução.
Etapas de consulta condicional:
1: Crie um objeto Criteria através do método CreateCriteria() do seesion
2: Defina o objeto de consulta, o nome refere-se ao atributo do objeto
3: Adicione condições de consulta ao objeto Critérios
4: Execute a consulta list() para retornar os resultados.
A consulta condicional é concluída por meio de três classes:
Critérios: representa uma consulta.
Critério: representa uma condição de consulta.
Restrições: Classe de ferramenta para geração de condições de consulta.
Este artigo vem do blog CSDN. Por favor, indique a fonte ao reimprimir: http://blog.csdn.net/jzaccp_xiaoxiong/archive/2009/12/31/5111135.aspx.