Olá, tudo bem?
Existem diversos tutoriais na internet e, que inclusive aqui no blog, mostram como realizar diversas tarefas com JPA.
Vejo diversas pessoas em fóruns com dúvidas sobre Queries em JPA e são necessários diversos links para mostrar uma solução sobre o assunto.
Até hoje não encontrei nenhum post que unisse um bom material sobre queries com JPA, dicas de performance/utilização, código fonte para download…

Hoje nós veremos aqui:
- Página 2: Classes de modelo e classe para gerar os dados do banco de dados
- Página 3: Utilizando método find; utilizar getReference para melhor performance, exibindo parâmetros da query no console através do lo4j
- Página 4: JPQL: Consultas com parâmetros simples ou objetos, Joins, Order By, Navegando pelos relacionamentos
- Página 5: JPQL: Funções: AVG, COUNT, MAX, MIN, TRIM, SUM, UPPER, LOWER, MOD, LENGHT, SQRT; Utilizar HAVING, GROUP BY
- Página 6: JPQL: Condições: LIKE, IN, DISTINCT, EMPTY, BETWEEN, NULL, MEMBER OF, EXISTS (Subqueries), ANY, ALL, SOME, CONCAT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, LOCATE, SIZE, SUBSTRING
- Página 7: JPA: NamedQuery, pesquisando com data, cuidados com getSingleResult
- Página 8: JPA: NativeQuery, NamedNativeQuery
- Página 9: JPA: Mapeamentos Complexos com NativeQuery
- Página 10: JPA: Otimizar Queries com EJB
- Página 11: JPA: Paginação
- Página 12: JPA: Hints para Banco de Dados
- Página 13: JPA: Criando um objeto dentro da consulta
- Página 14: JPQL: Bulk Update e Delete
- Página 15: JPA: Criteria
Você verá durante o decorrer desse post que o seguinte código será chamado “CodeGenerator.generateData()”. Essa classe tem apenas a função de gerar dados para as pesquisas demonstradas aqui tenham dados.
Na última página do post você irá encontrar o código fonte do projeto para download.
Nesse post iremos utilizar JPA 2.0 com Hibernate de provider. O banco de dados será o HSQLDB e já irá em anexo ao código do projeto. Você poderá baixar e executar o projeto sem a necessidade de configurações extras. Não irei mostrar como montar o ambiente com o HSQLD, pois o foco do post de hoje é apenas ver o funcionamento do JPA para consultas.
Esse post não visa demonstrar boas práticas para camadas de persistência, apenas demonstrar como são realizadas consultas e operações com o banco de dados.

