SlideShare uma empresa Scribd logo
Critérios para Queries

      Apresentado por:
       Rodrigo Vieira
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.
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();
}
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();
}
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);
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();
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.
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]
Se recuperássemos as durações da faixa, o
resultado seria esse :

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

[java] - [00:03:49, 00:06:06]
• 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)
OBRIGADO

Mais conteúdo relacionado

Destaque

Gráficos leitura dom 3ºperíodo-2010 n-¦ alunos
Gráficos leitura dom  3ºperíodo-2010 n-¦ alunosGráficos leitura dom  3ºperíodo-2010 n-¦ alunos
Gráficos leitura dom 3ºperíodo-2010 n-¦ alunosmalex86
 
BLOG DE JAMILDO - Chesfiano apresenta proposta Contra A UnificaçãO Da Eletrobras
BLOG DE JAMILDO - Chesfiano apresenta proposta Contra A UnificaçãO Da EletrobrasBLOG DE JAMILDO - Chesfiano apresenta proposta Contra A UnificaçãO Da Eletrobras
BLOG DE JAMILDO - Chesfiano apresenta proposta Contra A UnificaçãO Da Eletrobrasguest0739d3c
 
Arte moderna
Arte modernaArte moderna
Arte modernaISJ
 
Projekt Baden
Projekt BadenProjekt Baden
Projekt Baden
Piotr Nowak
 
Crecimiento de semillas de lechugas con pseudomonas
Crecimiento de semillas de lechugas con pseudomonasCrecimiento de semillas de lechugas con pseudomonas
Crecimiento de semillas de lechugas con pseudomonasMay
 
Um Dia De Tecnologia
Um Dia De TecnologiaUm Dia De Tecnologia
Um Dia De Tecnologiaformandoeisnt
 
Instalações para caprinos e ovinos
Instalações para caprinos e ovinosInstalações para caprinos e ovinos
Instalações para caprinos e ovinosmmaob
 
BLOG DE JAMILDO - Proposta de revisão da Lei de Licitação
BLOG DE JAMILDO - Proposta de revisão da Lei de LicitaçãoBLOG DE JAMILDO - Proposta de revisão da Lei de Licitação
BLOG DE JAMILDO - Proposta de revisão da Lei de Licitaçãoguest0739d3c
 
Aula 2 português revisão_4°ano_1°p
Aula 2 português revisão_4°ano_1°pAula 2 português revisão_4°ano_1°p
Aula 2 português revisão_4°ano_1°pViviane Oliveira
 
Aros kunstmuseum
Aros kunstmuseumAros kunstmuseum
Aros kunstmuseumSaima Waqas
 
Präsentation Umwandlung unserer Seniorenhäuser auf AltenPflege 5.0
Präsentation Umwandlung unserer Seniorenhäuser auf AltenPflege 5.0Präsentation Umwandlung unserer Seniorenhäuser auf AltenPflege 5.0
Präsentation Umwandlung unserer Seniorenhäuser auf AltenPflege 5.0
Unternehmensgruppe SeniVita
 
Blog deJamildo - Indicadores Industriais Dez09
Blog deJamildo - Indicadores Industriais Dez09Blog deJamildo - Indicadores Industriais Dez09
Blog deJamildo - Indicadores Industriais Dez09guest0739d3c
 
Regras Dos Homens X
Regras Dos Homens XRegras Dos Homens X
Regras Dos Homens Xsmdsm
 

Destaque (20)

Energieforen referat
Energieforen referatEnergieforen referat
Energieforen referat
 
Gráficos leitura dom 3ºperíodo-2010 n-¦ alunos
Gráficos leitura dom  3ºperíodo-2010 n-¦ alunosGráficos leitura dom  3ºperíodo-2010 n-¦ alunos
Gráficos leitura dom 3ºperíodo-2010 n-¦ alunos
 
BLOG DE JAMILDO - Chesfiano apresenta proposta Contra A UnificaçãO Da Eletrobras
BLOG DE JAMILDO - Chesfiano apresenta proposta Contra A UnificaçãO Da EletrobrasBLOG DE JAMILDO - Chesfiano apresenta proposta Contra A UnificaçãO Da Eletrobras
BLOG DE JAMILDO - Chesfiano apresenta proposta Contra A UnificaçãO Da Eletrobras
 
Arte moderna
Arte modernaArte moderna
Arte moderna
 
Projekt Baden
Projekt BadenProjekt Baden
Projekt Baden
 
Perfil mexico
Perfil mexicoPerfil mexico
Perfil mexico
 
Prin Serp
Prin SerpPrin Serp
Prin Serp
 
Redes Sociais2
Redes Sociais2Redes Sociais2
Redes Sociais2
 
Crecimiento de semillas de lechugas con pseudomonas
Crecimiento de semillas de lechugas con pseudomonasCrecimiento de semillas de lechugas con pseudomonas
Crecimiento de semillas de lechugas con pseudomonas
 
Um Dia De Tecnologia
Um Dia De TecnologiaUm Dia De Tecnologia
Um Dia De Tecnologia
 
Instalações para caprinos e ovinos
Instalações para caprinos e ovinosInstalações para caprinos e ovinos
Instalações para caprinos e ovinos
 
BLOG DE JAMILDO - Proposta de revisão da Lei de Licitação
BLOG DE JAMILDO - Proposta de revisão da Lei de LicitaçãoBLOG DE JAMILDO - Proposta de revisão da Lei de Licitação
BLOG DE JAMILDO - Proposta de revisão da Lei de Licitação
 
Aula 2 português revisão_4°ano_1°p
Aula 2 português revisão_4°ano_1°pAula 2 português revisão_4°ano_1°p
Aula 2 português revisão_4°ano_1°p
 
Drogas
DrogasDrogas
Drogas
 
Aros kunstmuseum
Aros kunstmuseumAros kunstmuseum
Aros kunstmuseum
 
Präsentation Umwandlung unserer Seniorenhäuser auf AltenPflege 5.0
Präsentation Umwandlung unserer Seniorenhäuser auf AltenPflege 5.0Präsentation Umwandlung unserer Seniorenhäuser auf AltenPflege 5.0
Präsentation Umwandlung unserer Seniorenhäuser auf AltenPflege 5.0
 
Blog deJamildo - Indicadores Industriais Dez09
Blog deJamildo - Indicadores Industriais Dez09Blog deJamildo - Indicadores Industriais Dez09
Blog deJamildo - Indicadores Industriais Dez09
 
Coletiva prefeitura arenas_comemoracoes
Coletiva prefeitura arenas_comemoracoesColetiva prefeitura arenas_comemoracoes
Coletiva prefeitura arenas_comemoracoes
 
Vernissage
VernissageVernissage
Vernissage
 
Regras Dos Homens X
Regras Dos Homens XRegras Dos Homens X
Regras Dos Homens X
 

Semelhante a Critérios para queries

Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
Arthur Emanuel
 
Como criar Custom Tags
Como criar Custom TagsComo criar Custom Tags
Como criar Custom Tags
Denis L Presciliano
 
BRMS - Business Rules Management System
BRMS - Business Rules Management SystemBRMS - Business Rules Management System
BRMS - Business Rules Management System
Samuel Tauil
 
Aula JPA
Aula JPAAula JPA
Aula JPA
Marco Reis
 
Automação de testes de API utilizando Postman
Automação de testes de API utilizando PostmanAutomação de testes de API utilizando Postman
Automação de testes de API utilizando Postman
Lucas Amaral
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalize
Artur Todeschini
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
Saulo Arruda
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Professor Samuel Ribeiro
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-frameworkAndré Caldas
 
Minicurso mongo db
Minicurso mongo dbMinicurso mongo db
Minicurso mongo db
Pablo Juan ஃ
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistencia
Roberson Alves
 
java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
GersonZavala2
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
Java script aula 07 - j-query
Java script   aula 07 - j-queryJava script   aula 07 - j-query
Java script aula 07 - j-query
Cristiano Pires Martins
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Elvis Rocha
 
Dinamizando Sites Estáticos
Dinamizando Sites EstáticosDinamizando Sites Estáticos
Dinamizando Sites Estáticos
Tiago Albineli Motta
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e Catch
Uilian Ries
 

Semelhante a Critérios para queries (20)

Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
 
Como criar Custom Tags
Como criar Custom TagsComo criar Custom Tags
Como criar Custom Tags
 
BRMS - Business Rules Management System
BRMS - Business Rules Management SystemBRMS - Business Rules Management System
BRMS - Business Rules Management System
 
Aula JPA
Aula JPAAula JPA
Aula JPA
 
Automação de testes de API utilizando Postman
Automação de testes de API utilizando PostmanAutomação de testes de API utilizando Postman
Automação de testes de API utilizando Postman
 
07 construtores e finalize
07   construtores e finalize07   construtores e finalize
07 construtores e finalize
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-framework
 
Minicurso mongo db
Minicurso mongo dbMinicurso mongo db
Minicurso mongo db
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistencia
 
java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Tag Libraries
Tag LibrariesTag Libraries
Tag Libraries
 
Java script aula 07 - j-query
Java script   aula 07 - j-queryJava script   aula 07 - j-query
Java script aula 07 - j-query
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
 
Dinamizando Sites Estáticos
Dinamizando Sites EstáticosDinamizando Sites Estáticos
Dinamizando Sites Estáticos
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e Catch
 

Critérios para queries

  • 1. Critérios para Queries Apresentado por: Rodrigo Vieira
  • 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ça Objetos de exemplo para mostrar o que você está procurando, controlando quais detalhes importam e quais propriedades ignorar.
  • 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. 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(); }
  • 5. 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);
  • 6. 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();
  • 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. 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]
  • 9. Se recuperássemos as durações da faixa, o resultado seria esse : criteria.setProjection(Projections.property(“playTime")); [java] - [00:03:49, 00:06:06]
  • 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)