Critérios para queries

1,112 views

Published on

Queries, Criterion, Hibernate

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,112
On SlideShare
0
From Embeds
0
Number of Embeds
174
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Critérios para queries

  1. 1. Critérios para Queries Apresentado por: Rodrigo Vieira
  2. 2. Critérios para Queries• Uma maneira de criar e conectar objetos simples de Java que agem como filtros para selecionar os seus resultados desejados.• Um mecanismo que permite que você forneçaObjetos de exemplo para mostrar o que vocêestá procurando, controlando quais detalhesimportam e quais propriedades ignorar.
  3. 3. Utilizando Critérios Simples public static List tracksNoLongerThan(Time length, Session session) { Criteria criteria = session.createCriteria(Track.class); return criteria.list();} public static List tracksNoLongerThan(Time length, Session session) { Criteria criteria = session.createCriteria(Track.class); criteria.add(Restrictions.le("playTime", length)); return criteria.list();} public static List tracksNoLongerThan(Time length, Session session) { return session.createCriteria(Track.clas). add(Restrictions.le("playTime", length)).list();}
  4. 4. Compondo CritériosÉ possível incluir mais de um Critérion em sua query e todos elesdevem ficar satisfeitos que os objetos sejam incluídos nos resultados.Criando mais de um Critério de query e como ordenar. public static List tracksNoLongerThan(Time length, Session session) { Criteria criteria = session.createCriteria(Track.class); criteria.add(Restrictions.le("playTime", length)); criteria.add(Restrictions.like("title", "%A%")); criteria.addOrder(Order.asc("title").ignoreCase()); return criteria.list();}
  5. 5. Podemos utilizar tambem para filtrar Strings.criteria.add(Restrictions.like("title", “A”,MatchMode.ANYWHERE);Se quiser fazer uma combinação sem distinçãoentre maiúscula e minúscula, utilize ilike em vezde like.criteria.add(Restrictions.ilike("title", “A”,MatchMode.ANYWHERE);
  6. 6. Se quiser encontrar quaisquer objetos quecombinem com qualquer um de seus critérios, emvez de exigir que eles se encaixem com todos oscritérios, é preciso utilizar: Restrictions.disjunction();public static List tracksNoLongerThan(Time length, Session session) { Criteria criteria = session.createCriteria(Track.class); Disjunction any = Restrictions.disjunction(); any.add(Restrictions.le("playTime", length)); any.add(Restrictions.like("title", "%A%")); criteria.add(any); criteria.addOrder(Order.asc("title").ignoreCase()); return criteria.list();
  7. 7. Projeção e Agregação com Critérios• Projeção – Significa simplesmente que você não precisa de todas as informações disponíveis em uma tabela.• Agregação – Semelhantemente, envolve a identificação de propriedades, assim podendo pedir informações estáticas dessas propriedades, como valores de contagem, ou encontrar valores máximos, mínimos ou médios.
  8. 8. Obtendo uma projeção e que estamosinteressados especificamente em recuperar apropriedade do titulo das faixas que encontramos.public static List titlesContainingText(String text, Session session) { Criteria criteria = session.createCriteria(Track.class); criteria.add(Restrictions.like("title", text, MatchMode.ANYWHERE).ignoreCase()); criteria.setProjection(Projections.property("title")); return criteria.list();[java] - [Video Killed the Radio Star, Gravity´s Angel]
  9. 9. Se recuperássemos as durações da faixa, oresultado seria esse :criteria.setProjection(Projections.property(“playTime"));[java] - [00:03:49, 00:06:06]
  10. 10. • O método projectionList() cria uma instância ProjectionList que pode conter escolhas multiplas de projeção para uma única query com critérios.public static List titlesContainingTextWithPlayTimes(String text, Session session) { Criteria criteria = session.createCriteria(Track.class); criteria.add(Restrictions.like("title", text, MatchMode.ANYWHERE).ignoreCase()); criteria.setProjection(Projections.projectionList(). add(Projections.property("title")). add(Projections.property("playTime"))); return criteria.list(); }[java] Title: Video Killed the Radio Star (Play Time: 00:03:49)[java] Title: Gravity´s Angel (Play Time: 00:06:06)
  11. 11. OBRIGADO

×