Boa tarde galera…
Estou quebrando a cabeça aqui sobre o seguinte problema.
O projeto em questão deve obrigatoriamente trabalhar somente com a especificação JPA 1.0, não posso usar nada que não seja de javax.persistence…
Um exemplo de um metodo do dao
public Venda carregarVendaPorCategoria(int maxResult, String fornecedorAlias) {
String jpql = "Select venda from Venda venda "
+ " join fetch venda.fornecedor fornecedor "
+ " join fetch venda.produtos produtos "
+ " join fetch produtos.categoria categoria "
+ " where fornecedor.alias = :alias order by venda.id desc";
Query query = this.em.createQuery(jpql);
query.setParameter("alias", fornecedorAlias);
query.setMaxResults(maxResult);
return query.getSingleResult();
}
Quais são os meus problemas:
1 - Quando uso join fetch o MaxResults é feito em memória, aí já inviabiliza a query;
2 - Essa query será executada constantemente dentro de um intervalo de tempo(Uma espécie de dashboard), e dados que não mudam frequentemente como categoria do produto e fornecedor estão sendo buscados a cada execução(Uma ótima oportunidade para jogar em cache), pois bem, eu sei fazer isso com jpa 2.0 e/ou com o hibernate.
Alguém sabe se é possível implementar algo apenas com a especificação da JPA 1.0 ?? Consigo usar essa especificação com o ehcache ??
Muito obrigado