11.07.2015 Views

Persistência com JPA2 e Hibernate - Inpi

Persistência com JPA2 e Hibernate - Inpi

Persistência com JPA2 e Hibernate - Inpi

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

JPQLC A P Í T U L O4A capacidade que os bancos de dados possuem para realizar consultas de maneira eficiente é umforte argumento para utilizá-los. A definição e os resultados das consultas nos banco de dados sãofortemente baseados no modelo relacional. Por outro lado, é natural que as aplicações baseadas nomodelo orientado a objetos desejem que a definição e os resultados das consultas sejam baseadosno paradigma orientado a objetos.Por isso, os provedores de JPA oferecem mecanismos para realizar consultas de uma maneira orientadaa objetos. Para ser mais exato, a especificação JPA 2 define dois mecanismos para realizarconsultas orientadas a objetos: o primeiro utiliza uma linguagem específica para consultas chamadaJPQL (Java Persistence Query Language) e o segundo é basicamente uma biblioteca Java para consultas.Outro fator fundamental para justificar a utilização dos mecanismos de consulta do JPA 2 é queeles são independentes dos mecanismos específicos de consulta do banco de dados. Podemos definiruma consulta em JPQL ou Criteria e executá-la em qualquer banco de dados suportado peloprovedor JPA. Neste capítulo, mostraremos o funcionamento da JPQL.Consultas DinâmicasConsultas em JPQL podem ser definidas em qualquer classe Java, dentro de um método porexemplo. Para criar uma consulta, devemos utilizar o método createQuery() passando uma string<strong>com</strong> o código JPQL. Consultas criadas dessa maneira são chamadas de consultas dinâmicas.1 public void umMetodoQualquer () {2 String jpql = " SELECT p FROM Pessoa p";3 Query query = manager . createQuery ( jpql );4 }Apesar da flexibilidade, criar consultas dinâmicas pode prejudicar a performance da aplicação.Por exemplo, se uma consulta dinâmica é criada dentro de um método toda vez que esse método forchamado, o código JPQL dessa consulta será processado pelo provedor. Uma alternativa às consultasdinâmicas são as Named Queries, que são menos flexíveis porém mais eficientes.Named QueryDiferentemente de uma consulta dinâmica, uma Named Query é processada apenas no momentoda inicialização da unidade de persistência. Além disso, os provedores JPA podem mapearas Named Queries para Stored Procedures pre-<strong>com</strong>piladas no banco de dados melhorando a performancedas consultas.www.k19.<strong>com</strong>.br 75

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!