Archive

Archive for the ‘Criteria’ Category

Ótima fonte para aprender Hibernate

Ei pessoal, se você quer uma ótima fonte para aprender Hibernate, aqui está:

http://www.roseindia.net/hibernate/index.shtml

Enjoy!

Hibernate: HQL x Criteria

É muito comum em entrevistas perguntarem as diferenças entre HQL e Criteria, ambos relacionados com Hibernate. Para quem não sabe, HQL quer dizer Hibernate Query Language.

O HQL é mais próximo do SQL, é mais utilizado para consultas fixas, que não tem alterações no número de parâmetros necessários.

O Criteria é mais voltado para consultas onde o número de parâmetros não é conhecido, como em listagens que contém N filtros, neste caso o Criteria é mais recomendado por montar uma instrução mais direcionada para a busca em questão, sem adicionar campos ou parâmetros desnecessários, o que acaba agilizando a consulta na base de dados.

O Criteria oferece ainda N métodos e parâmetros para realmente fazermos uma busca bem poderosa e personalizada.

Um exemplo de uso de criteria é este abaixo, onde já temos uma classe CIDADE mapeada no Hibernate:

Criteria c = getSession().createCriteria(Cidades.class); // criando o criteria para a classe cidade
c.add( Restrictions.eq(“estado.uf”, “SP”) ); // fazendo um filtro, no caso, onde estado == SP
List cidadesDeSaoPaulo = c.list(); // retornando a listagem – Fácil né?

O mais interessante ainda é que criteria tem vários métodos que podem nos auxiliar com as querys, por exemplo, trazer ordenado por descrição:

c.addOrder( Order.asc(“descricao”) );

Para setar a quantidade máxima de resultados, usamos o setMaxResults:

crit.setMaxResults(15);

Referências:

Mais sobre criteria pode ser obtido aqui.
Vários exemplos de consultas podem ser obtidas aqui.
Mais sobre HQL aqui.

Enjoy!