Hibernate: Consultas (Parte II) Clodis Boscarioli

Documentos relacionados
Hibernate: Consultas. Clodis Boscarioli

ANÁLISE E PROJETO DE BANCO DE DADOS

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

One-to-Many. Many-to-One. Many-to-Many

JPQL (Java Persistence Query language)

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

HQL Hibernate Query Language Sumário

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Introdução ao PostgreSQL

As Instruções DML. As Instruções de manipulação de dados(dml) em SQL são representados por: Modificam o estado do banco de dados:

Subconsulta na Cláusula FROM

Prof. Fabiano Taguchi

Java Persistence Query Language JPQL

IMPLEMENTAÇÃO DE BANCO DE DADOS

Rápida revisão do Modelo Relacional

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

PERSISTÊNCIA DE DADOS EM JAVA UTILIZANDO HIBERNATE: Mapeamento Objeto / Relacional

Comandos de Manipulação

Linguagem SQL - Structured Query Language

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Linguagem SQL - Structured Query Language

Linguagem de Consulta - SQL

Resolvendo objeto-relacional impedance mismatch com hibernate

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos

BCD29008 Banco de dados

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

SQL (Tópicos) Structured Query Language

Consulta sobre múltiplas relações

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Banco de Dados II. Aula do dia 10/03. Revisão. SQL Estudado até o dia 03/03/2011

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Linguagem SQL - Structured Query Language

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Revisão de Bancos de Dados

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

SQL-99: Esquema de BD EMPRESA

SQL DML. Frederico D. Bortoloti

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 17. Escola Politécnica da Universidade de São Paulo

Francisco Roeder. Orientador: Prof. Adilson Vahldick

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

SQL - Consultas

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

Sumário SELECT + FROM

Subconsulta na Cláusula FROM

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

Consultas SQL Parte II

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

Roteiro. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

SQL - Structured Query Language

MySql. Introdução a MySQL. Andréa Garcia Trindade

Banco de dados. Aula 22 O Comando SELECT. 1 Wedson Quintanilha da Silva -

DML - SELECT JUNÇÕES (JOIN)

Preparação. Na página do curso, fazer download do arquivo LabAula.txt; No EasySQL,

Utilizando o Postgres - comandos SQL para a manipulação de dados

Parte III Persistência entre Modelos de Dados

Linguagem de Consulta Estruturada SQL- DML

Criando e executando consultas. Formas de criar consultas

Revisão Banco de Dados

Curso PHP Aula 08. Bruno Falcão

SQL. Agregações e agrupamentos. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Aula 5. Carlos Eduardo de Carvalho Dantas

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

Tutorial de Manipulação de dados com SQLite

Módulo III Camada de Persistência

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

Linguagem SQL Comando SELECT Agrupamento de Resultados

Álgebra Relacional e SQL

Aula 11 SBD SQL Parte 3. Profa. Elaine Faria UFU

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

SISTEMAS DE INFORMAÇÃO BANCO DE DADOS 2. SQL (Select) PROF: EDSON THIZON

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

MAPEAMENTO OBJETO RELACIONAL COM HIBERNATE EM APLICAÇÕES JAVA WEB

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

Hibernate Anotations

Introdução a Bancos de Dados

Android e Bancos de Dados

BCD29008 Banco de Dados

DW2 Desenvolvimento Web 2

Linguagem de Consulta Estruturada SQL- DML

SQL. Prof. Roger Cristhian Gomes

Curso de Java. Acesso a banco de dados através do Hibernate. Todos os direitos reservados Klais

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro

Ordenação de tuplos order by

Transcrição:

Hibernate: Consultas (Parte II) Clodis Boscarioli

HQL Funções de Agregação //Retorno em um array de Object[] select max(bodyweight) as max, min(bodyweight) as min, count(*) as n from Cat cat select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat) from Cat cat select c.nome, count(c.id_departamento) from Curso c group by c.nome

HQL Group By e Order By select cat.color, sum(cat.weight), count(cat) from Cat cat group by cat.color select cat.age, sum(cat.weight), count(cat) from Cat cat group by cat.color having cat.age >= 2 select cat from Cat cat join cat.kittens kitten group by cat.id, cat.name, cat.other, cat.properties having avg(kitten.weight) > 100 order by count(kitten) asc, sum(kitten.weight) desc

HQL Subqueries from Cat as fatcat where fatcat.weight > (select avg(cat.weight) from DomesticCat cat) from Cat as cat where not exists ( from Cat as mate where mate.mate = cat) from Cat as cat where not ( cat.name, cat.color ) in (select cat.name, cat.color from DomesticCat cat)

HQL Consulta Polimórfica (Herança) Retorne todos seres vivos, animais e vegetais. from SerVivo Retorne somente seres vivos do tipo Animal. from Animal Retorne somente seres vivos do tipo Vegetal. from Vegetal as v

HQL Consulta Polimórfica (Herança) O SQL gerado depende da implementanção usada na herança, que pode ser Tabela por Subclasses:

HQL Consulta Polimórfica (Herança) HQL: from Animal SQL: select sv.id, sv.nome, a.temp from servivo sv inner join animal a on sv.id = a.id

HQL Uso Lista todos os alunos: Query q = session.createquery("from Aluno"); q.list(); Lista todos os Cursos que o departamento tem id = 4: String hql = "from Curso c where c.departamento.id = 24; Query q = session.createquery(hql); q.list();

HQL Paginação Consulta recupera do banco de dados apenas as tuplas dentro de uma faixa de resultados. Por exemplo: Query q = session.createquery( from Aluno ); q.setfirstresult(10); q.setmaxresults(30); q.list();

HQL Nomeação de Parâmetros Possibilidade de nomear parâmetros para defini-los a posteriori. Query q = createquery("from Aluno a where a.nome = :nome"); q.setstring("nome", "João"); List result = q.list();

HQL Nomeação de Parâmetros Query q = createquery( "from Empregado e where e.empresa.tipo = :tipo and e.salario > :salario and e.idade > e.esposa.idade"); q.setinteger("tipo", 1); q.setdouble("salario", 1500); List result = q.list();

HQL Atualizações //... Transaction tx = session.begintransaction(); Query q = createquery( update Curso set nome = :novonome + where id = :idcurso"); q.setstring( novonome", Novo Nome ); q.setinteger( idcurso", 150); q.executeupdate(); tx.commit(); //...

HQL Atualizações //... Transaction tx = session.begintransaction(); Query q = createquery( delete from Aluno where curso.id = :idcurso"); q.setinteger( idcurso", 150); q.executeupdate(); tx.commit(); //...

Consultas por Critérios (Interface Criteria) Permite construir queries pela manipulação de critérios em tempo de execução; Uso de objetos ao invés de strings; Mais Orientado a Objetos; Menos legível.

Criteria Exemplos Listar todas as empresas cadastradas. Criteria c = session.createcriteria(empresa.class); ArrayList<Empresa> empresas = (ArrayList<Empresa>) c.list(); Listar todas as empresas com nome E1 e que endereço comece com A. Criteria c = session.createcriteria(empresa.class); c.add(expression.eq( nome, E1 )); c.add(expression.like( endereco, A% )); ArrayList<Empresa> empresas = (ArrayList<Empresa>) c.list();

Criteria Exemplos Listar todos os funcionários sem data de nascimento, ordenados por nome. Criteria c = session.createcriteria(funcionario.class); c.add(expression.isnull( datanascimento )); c.add(order.asc( nome )); ArrayList<Funcionario> funcionarios = (ArrayList<Funcionario>) c.list(); Retorne os projetos cujas datas de finalização já estejam definidas. Criteria c = session.createcriteria(projeto.class); c.add(expression.isnotnull( datafinalizacao )); ArrayList<Projeto> projetos = (ArrayList<Projeto>) c.list();

Criteria Exemplos Retorno o projeto com valor de id igual a 23. Como é chave primária, apenas retorna um elemento. Criteria c = session.createcriteria(projeto.class); c.add(expression.eq( id, 123)); Projeto projeto = (Projeto) c.uniqueresult();

Criteria Exemplos Dê os projetos com status pertencentes aos seguintes valores: 1, 2 e 3. Criteria c = session.createcriteria(projeto.class); c.add(expression.in( status, new Integer[]{1, 2, 3})); ArrayList<Projeto> projetos = (ArrayList<Projeto>) c.list();

Criteria Paginação Retorna do décimo ao trigésimo aluno considerando-os em ordem crescente de matrícula. Criteria criteria = session.createcriteria(aluno.class); Criteria.add(Order.asc( matricula )); criteria.setfirstresult(10); criteria.setmaxresults(30); ArrayList<Aluno> alunos = (ArrayList<Aluno>) criteria.list();

Criteria Projeção, Agregação, group by Criteria criteria = session.createcriteria(projeto.class); //Indicar as propriedades que quer carregar ProjectionList p = Projections.projectionList().create(); p.add( Projetions.rowCount() ); p.add( Projetions.avg( valor ) ); p.add( Projetions.max( valor ) ); p.add( Projetions.groupProperty( id ) ); criteria.setprojection(p); List = criteria.list();

Criteria Exemplos Criteria c = session.createcriteria(matriculacomponente.class); c.add(expression.eq("turma", new Turma(idTurma))); c.add( Expression.or( Expression.eq( "situacaomatricula", SitMatricula.EM_ESPERA), Expression.eq( "situacaomatricula", SitMatricula.MATRICULADO) ) ); c.setprojection(projections.sum("id")); Integer total = (Integer) c.uniqueresult();

Em suma: HQL pode ser assim utilizada na camada de persistência Hibernate, baseada no código de aplicação: Utilizar o método createquery () de um objeto Session que retorna um objeto Query. Primeiro, crie uma instância do Sessão objeto usando o método opensession () de SessionFactory. Em seguida, chame o método createquery () sobre o objeto resultante. Exemplo: Session session; Query q1 = session.createquery("select emp.sal from comp.emp as emp"); List result = q1.list(); Aqui, o objeto q1 Query usa o método lista () para retornar uma lista contendo uma lista de objetos query resultantes.

Essa mesma tarefa pode ser efetuada utilizando como: List result = session.createquery("select emp.sal from comp.emp as emp").list(); Ou ainda como: session.createquery("select emp.sal from comp.emp as emp").list();

Em suma: Utilizar a API Criteria permite especificar vários critérios de consulta e executa a query HQL equivalente em segundo plano. Primeiro, um objeto Criteria deve ser obtido invocando o método createcriteria () em Session, fornecendo uma classe de objeto(s) desejada para ser devolvido como resultado uma query, como um método argumento.

Criteria Exemplos Session session; //some code List result = session.createcriteria(emp.class).add(expression.lt("emp_no", empno) /*emp_no < empno*/.add(order.desc(emp_sal)).list();

Fontes Bibliográficas: Java Persistence com Hibernate. Christian Bauer, Gavin King. Editora Ciência Moderna, 2007. Hibernate: Manual de Referência. Disponível em: http://www.hibernate.org/hib_docs/reference/en/html/ queryhql.html