Criteria Hibernate na prática

Olá, pessoal! Se você está iniciando com o Hibernate, um dia vai ser apresentado ao Criteria. Realmente, quem usa o Criteria não quer voltar ao SQL para as funções mais básicas e só o faz nos casos extremos, nos quais o Criteria não atende. Então, neste artigo vou mostrar um pouco o que se pode fazer com o Criteria nas suas aplicações Java. Farei uma breve introdução neste primeiro artigo e no próximo vamos colocar mão na massa. Mas, por enquanto, quero que conheçam um pouco a sintaxe.

Criteria

Criteria Query API permite construir query expression em Java, possibilitando, assim, a checagem em tempo de compilação - ao contrário do HQL ou SQL. O Criteria API permite, de forma programática, construir objetos query a partir da interface org.hibernate.Criteria, que define os métodos disponíveis que precisamos para trabalhar com o Criteria.
Para persistir um objeto da classe, usamos o método createCriteria(), que retorna um objeto Criteria, que permite ter acesso a instância de persistência da classe. O createCriteria() pertence à interface Session. Então, se for preciso retornar todas propriedades de uma classe com Criteria, seria assim:
 Criteria critera = session.createCriteria(Produto.class)
 List lista = criteria.list();
Bem mais simples do que o HQL. Este é o mesmo resultado com o from Produtos, que executamos no HQL e que fazemos no SQL: SELECT * from mytable.
Vamos dizer que precisamos obter os produtos que tenham no nome “smartphone”, então, precisamos conhecer o método add() da classe Criteria, que tem como objetivo adicionar uma restrição em seu argumento. Uma outra classe importante é Restrictions class, do pacote org.hibernate.Criterion, que possui métodos static para as condições de restrições que precisamos. Veja o trecho do código:
 Criteria crit = sesion.createCriteria(Produto.class)
 crti.add(Resctrictions.eq(“nome”, “smart phone”);
 List list = crit.list();

Explicando o código:

Na primeira linha, nós criamos o objeto Criteria que fez a persistência em nossa entidade. Na linha 02, costumo ler da seguinte forma para facilitar a compreensão: “adicionando uma restrição a class persistida”. Na linha 03 é o resultado da restrição.
Um ponto importante é que não podemos fazer uma restrição de resultado usando o método eq/ne para propriedades com o valor null. Para isso, há métodos static especificos: o isNull() e o isNotNull().
Para realizar busca, temos os métodos like() e ilike(). Eles servem para quando precisamos buscar algo fornecendo apenas algumas informações para o buscador. Exemplo: traga todos os produtos que tem a palavra “smart”. A diferença é que o ilike é case-insensitive.
Outro detalhe importante que podemos informar é onde buscaremos a palavra: no inicio, no final - para ser exato -, ou em qualquer lugar. Exemplo:
 Criteria crit = session.createCriteria(Produto.class)
 crit.add(Restrictions.like(“nome”, “smart%”));
 List list = crit.list();
O símbolo % informa que a busca é por partes da string. No exemplo a seguir, eu seleciono para buscar no final dela.
Crit.add(Restrictions.like(“nome”, “smart”, MatchMode.end));
O MatchMode é um tipo de enumeration que possui quatro tipos diferentes de match: anywhere, end, exact, start.
E assim finalizo o primeiro artigo sobre Criteria. No próximo veremos mais algumas restrições interessantes.
 Espero que tenham gostado do artigo!
Obrigado pelo seu comentário

Postagens Relacionadas

Related Posts Plugin for WordPress, Blogger...

Programador GB