Cache e maxResults na JPA 1.0

2 respostas
sunwebdeveloper

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

2 Respostas

E

Não usei JPA 1.0, mas o CriteriaBuilder não faria isso que você quer?

sunwebdeveloper

Ola evefuji, então cara, nem tenho essa classe no meu classpath… ela deve fazer parte da jpa 2.0 eu acho…

Criado 29 de dezembro de 2011
Ultima resposta 29 de dez. de 2011
Respostas 2
Participantes 2