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:
[list]Ao iniciar o EntityManagerFactory ele analisa todas as Entitys que possuem as anotações de NamedQuery e cria os respectivos SQL;[/list]
[list]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.[/list]
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.