Top Banner
Critérios para Queries Apresentado por: Rodrigo Vieira
11

Critérios para queries

Nov 28, 2014

Download

Documents

Rodrigo Vieira

Queries, Criterion, Hibernate
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Critérios para queries

Critérios para Queries

Apresentado por:

Rodrigo Vieira

Page 2: Critérios para queries

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ça

Objetos de exemplo para mostrar o que você está procurando, controlando quais detalhes importam e quais propriedades ignorar.

Page 3: Critérios para queries

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();

}

Page 4: Critérios para queries

Compondo Critérios

É possível incluir mais de um Critérion em sua query e todos eles devem 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(); }

Page 5: Critérios para queries

Podemos utilizar tambem para filtrar Strings.

criteria.add(Restrictions.like("title", “A”, MatchMode.ANYWHERE);

Se quiser fazer uma combinação sem distinção entre maiúscula e minúscula, utilize ilike em vez de like.

criteria.add(Restrictions.ilike("title", “A”, MatchMode.ANYWHERE);

Page 6: Critérios para queries

Se quiser encontrar quaisquer objetos que combinem com qualquer um de seus critérios, em vez de exigir que eles se encaixem com todos os crité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();

Page 7: Critérios para queries

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.

Page 8: Critérios para queries

Obtendo uma projeção e que estamos interessados especificamente em recuperar a propriedade 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]

Page 9: Critérios para queries

Se recuperássemos as durações da faixa, o resultado seria esse :

criteria.setProjection(Projections.property(“playTime"));

[java] - [00:03:49, 00:06:06]

Page 10: Critérios para queries

• 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)

Page 11: Critérios para queries

OBRIGADO