Cache dos SQL gerados pelo Hibernate/JPA  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
cvinicius
JavaEvangelist

Membro desde: 18/04/2008 16:35:05
Mensagens: 433
Localização: SP
Offline

Boa noite

Estou tendo que analisar o cache dos SQL gerados pelo JPA/Hibernate, estou trabalhando em um sistema onde a maioria das consultas são geradas através do createQuery ou createNamedQuery da JPA (EntityManager).

Analisando o log de execução do hibernate ele faz os seguintes procedimentos:

  • Ao iniciar o EntityManagerFactory ele analisa todas as Entitys que possuem as anotações de NamedQuery e cria os respectivos SQL;

  • Ao chamar os métodos que trabalham com o método createQuery, aparentemente ele faz o mesmo processo da NamedQuery, só que ao invés de gerar o SQL na criação do EntityManagerFactory, ele o faz assim que o método é chamado pela 1º vez dentro do sistema.


  • Após os processos acima, analisando o log de execução, ao chamar algum método que execute um NamedQuery ou invoca um createQuery, o Hibernate não analisa novamente a Entity e já executa o SQL, aparentemente ele já tem o mesmo carregado em mémoria.

    Minha dúvida é se o Hibernate já faz esse tipo de cache de SQL por padrão (seja por HQL em métodos ou por NamedQuery), ou é necessário alguma configuração extra ?

    Obrigado.

    This message was edited 1 time. Last update was at 31/01/2012 21:29:34


    Sun Certified Java Programmer 5
    Oracle Certified Associate, Java SE
    Oracle Certified Professional Java EE 5 Web Component Developer
    boneazul
    Java Ninja
    [Avatar]

    Membro desde: 29/10/2007 17:13:59
    Mensagens: 284
    Offline

    Se não me engano por padrão ele já deixa em memória o parse de todas as queries criadas com a anotação @NamedQuery... Tanto é que voce consegue pegar problemas de compilação quando muda nome de atributos ja ao subir seu server .. coisa que não acontece quando voce usa criteria ou hql direto no session.create.....
    [Email]
    cvinicius
    JavaEvangelist

    Membro desde: 18/04/2008 16:35:05
    Mensagens: 433
    Localização: SP
    Offline

    Boa tarde

    Então realmente para as @NamedQuery o hibernate carrega todas as querys em memória, habilitei o log e pude reparar esse comportamento.

    Valeu.

    Sun Certified Java Programmer 5
    Oracle Certified Associate, Java SE
    Oracle Certified Professional Java EE 5 Web Component Developer
     
    Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team