Olá desenvolvedores, neste tutorial criaremos algumas queryes específicas para utilizar a parte de persistência da nossa aplicação, o Entity Manager, mas, fora do DAO – Data Access Object.

QUERYES

Uma Query pode ser entendida de forma sucinta como uma requisição ao banco de dados. Esta requisição é feita em uma linguagem que o banco entenda, o SQL – Structured Query Language. Esta linguagem não é a única que podemos utilizar para nos comunicarmos com o banco de dados, mas é a mais popular.

Assim, é por meio das queryes que podemos proceder com o gerenciamento da base de dados, criando registros, consultando, atualizando e excluindo.

ENTITY MANAGER

O Entity Manager são API’s configuradas para ler e escrever em uma base de dados, elas devem ser implementadas por um servidor de persistência, como o framework Hibernate. Com o Entity Manager todas as operações são encapsuladas em interfaces EntityManager do tipo EntityManagerFactory. Em suma, o que uma Entity Manager faz é oferecer um ponto de acesso global.

DAO

Uma classe DAO – Data Access Object tem como objetivo encapsular todos os acessos ao banco de dados. Fornecendo assim uma interface para que as diversas camadas da aplicação possam se comunicar com a base de dados a partir de um ponto de acesso global.

CRIANDO AS QUERYES ESPECÍFICAS

O primeiro passo para a criação de queryes específicas é criação de um get para o Entity Manager. Com a visibilidade public podemos acessá-lo em qualquer parte do projeto.

O segundo passo é de fato escrever um HQL – Hibernate Query Language, dentro da classe de teste. O HQL é a linguagem do Hibernate para realizar operações na base de dados. Com esta linguagem é possível armazenar e recuperar objetos Java por meio do ORM – Object-Relational Mapping (Mapeamento Objeto-Relacional).

O escopo do método testeQueryList recebe a instância do DaoGeneric. Retornaremos uma lista vinda da entidade UsuarioPessoa. Para carregar a lista utilizaremos createQuery que enviará uma instrução SQL – Standard Query Language direto para o banco de dados.

O procedimento de enviar uma instrução SQL diretamente para o banco de dados é especialmente útil quando se deseja utilizar recursos específicos do banco de dados, como por exemplo, enviar um comando de delete direto para a base de dados.

Assim para carregar de forma completa os objetos persistidos utilizaremos a cláusula “FROM”. A interface ResultList() “agrupará” os dados coletados.

Para encerrar o processo enviamos um “commit”. O commit é o ato de enviar dados ou códigos para serem armazenados, neste caso, gravado em um banco de dados. Após o commit a lista é retornada.

transaction.commit();

E como se trata de uma lista será preciso também um “for each” para percorrer a lista de dados e listá-los.

EM POUCAS PALAVRAS

Suponha que agora você quer que a lista exiba por exemplo apenas os registros cujo nome seja “Egidio”. Neste caso, basta fazer uma pequena alteração na Query.

Com esta implementação podemos fazer implementar aplicações mais complexas, no entanto, o processo de implementação das rotinas continua relativamente simples. E assim, muitas outras condições poderão ser implementadas passando “por fora” do DAO.