Como faço para usar o cache de query do hibernate?
Pelo que vi na especificação basta fazer:
Query.setCacheable(true);
Porem a interface Query da JPA não possui o método setCacheable, ele está na inteface Query do Hibernate. Mas como faço para acessar este objeto do hibernate?
Estou enviando um trecho do código que estou utilizando.
public class PermissoesImpl implements Permissoes {
@PersistenceContext
private EntityManager em;
@Override
@SuppressWarnings("unchecked")
public Collection<Permissao> getPermissoes(Pessoa daPessoa) {
List<Permissao> permissoes = null;
if (daPessoa != null) {
GrupoAcesso grupo = daPessoa.getGrupoAcesso();
if (grupo != null) {
Query queryPermissoes = em.createNamedQuery("findPermissoesByGrupoAcesso");
queryPermissoes.setParameter("idGrupoAcesso", grupo.getId());
permissoes = queryPermissoes.getResultList();
}
}
return permissoes;
}
}
Pois é, voce tera de colocar hints. Esses detalhes nao sao padronizados (e esse em especifico tambem nao foi padronizado na JPA 2.0)
Voce pode invocar o metodo setHint passando org.hibernate.cacheable o valor true, e setar as propriedades ja conhecidas no persistence.xml para ativar o query cache e o cache provider (e se desejar a region no ehcache.xml). Pode tambem criar a hint na anotacao do @NamedQuery.
O pessoa pode me ajudar?
Estou habilitando somente o cache do hibernate 3.x com JPA 1 para a geração do SQL…vc poderia me ajudar?
1)Tenho que configurar oque no persistence.xml? Ou não precisa fazer nada?
2)Depois tenho que colocar hint na query? Dessa forma aqui:
OU o cache do instrução SQL gerada ja é feita no namedQuery?