Tecnologia

Série de dicas para JPA/Hibernate! Começando com: Não retorne desnecessariamente a entidade

Por: , outubro 30, 2013

Olá pessoal!
Depois de alguns anos trabalhando e estudando JPA/Hibernate, é normal aprender algumas boas práticas no seu uso e não cair em algumas “tentações”. Muitas delas vêem do fato do JPA/Hibernate ser muito permissivo, e toda esta liberdade pode acabar onerando a aplicação se o desenvolvedor não estiver com total ciência do que está fazendo.
Sendo assim, resolvi juntar algumas dicas de uso do JPA/Hibernate que podem nos livrar de vários incômodos no futuro.
Se em algum momento, durante a série, eu mencionar apenas Hibernate, estarei falando do JPA também, assim quando mencionar JPQL ou HQL. Se estiver mencionando algo que é exclusivo do Hibernate, deixarei claro esta intenção. Enfim, vamos as dicas!
Como vou detalhar bem cada uma, este texto vai virar uma série, onde cada dica estará bem explicada, com exemplos. Vamos começar com um problema de retorno desnecessário de informações.

Dica 1 – Não retorne desnecessariamente a entidade

Esta é muito comum. Em dado momento, o desenvolvedor precisa apenas do ID da entidade, mas ao realizar a busca, retorna toda a entidade sem necessidade!
Dado uma entidade Pessoa, vamos a um exemplo JPQL retornando a entidade:
SELECT pessoa FROM Pessoa pessoa
Sendo que poderia ser apenas:
SELECT pessoa.id FROM Pessoa pessoa
Esta dica simples é especialmente crucial quando suas entidades tem algum relacionamento EAGER, pois o retorno da entidade também irá trazer os relacionamentos EAGER do mapeamento. Este assunto também será abordado na série.
Aliado a outros problemas, que também veremos ao longo da série, este pequeno mal hábito pode virar algo bem maior. A mesma ideia vale se deseja retornar apenas poucos campos. Neste caso, o JPQL ficaria:
SELECT pessoa.id, pessoal.nome FROM Pessoa pessoa
O cuidado neste caso é que, no Java, cada resultado será recebido como um array de Object, da seguinte maneira:
String jpql = “SELECT pessoa.id, pessoal.nome FROM Pessoa pessoa”; Query query = entityManager.createQuery(jpql); List resultados = query.getResultList();
Usando esta dica, temos uma uma maneira bem racional de usar JPA. Em breve, vou trazer mais dicas. Aguardem!
Se gosta de assuntos envolvendo qualidade de código, também é possível acompanhar meu blog pessoal: http://qualidadegarantida.blogspot.com.br/ . Acredito que logo também teremos textos envolvendo Hibernate por lá.

  • Receba nosso conteúdo em primeira mão.