JPA - Examinar a linguagem de consulta do Java Persistence API (JPQL)
Interface javax.persistence.Query
A interface Query é responsável por:
Fazer as consultas.
Executar updates.
Passar parâmetros para consulta.
Pegar um simples resultado.
Pegar uma lista de resultados.
Para executar uma consulta utilizamos a interface javax.persistence.Query e criamos uma Query a partir do EntityManager, exemplo:
Nesse exemplo estamos utilizando a EntityManager para criar uma consulta nomeada através do método getNamedQuery e passamos o nome da consulta “Emprestimo.consultarTodos” declarado na entidade.
Através da EntityManager podemos utilizar o método createQuery para criar a consulta e já declarar todo o código dela, podendo criar uma consulta um pouco mais personalizada:
Também podemos criar uma consulta nativa para uma base de dados especifica:
Para executar uma consulta podemos ter como resposta um simples objeto ou uma lista de objetos.
Neste exemplo vamos executar uma consulta que retorna uma lista de objetos:
O método getResultList() da interface Query é retornado uma lista de entidades.
Consulta que retorna um unico objeto:
O método getSingleResult() da interface Query é retornado apenas um objeto. Este método pode lançar também a exceção javax.persistence.NoResultException quando a consulta não retorna nenhum resultado ou também uma exceção javax.persistence.NonUniqueResultException quando você espera retornar apenas um
objeto e a consulta acaba retornando mais de um objeto.
Através da interface Query podemos passando parâmetros para a consulta através do método setParameter:
Exemplo de classe Emprestimo de livros onde são declarados os atributos referentes ao emprestimo e também declarados todas as NamedQueries que iremos utilizar para consultar as informações de emprestimos.
Exemplo de classe DAO que executa as operações: salvar, alterar, remover, consultar por id, consultar todos os emprestimos, consultar a quantidade de emprestimos de um livro e consultar todos os emprestimos de um livro.