O documento discute as linguagens HQL e Criteria para consultas no Hibernate, abordando: 1) HQL é baseada em SQL e suporta classes, enquanto Criteria é 100% Java; 2) Ambas permitem filtros, ordenação, junções e agregações; 3) Criteria é indicada quando as consultas são dinâmicas.
Aqui são apresentados as técnicas de Desenvolvimento com xdoclet de formas simples e prática.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Aqui são apresentados as técnicas de Desenvolvimento com xdoclet de formas simples e prática.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
Nesta palestra, eu apresentei uma visão geral da evolução da linguagem de programação C# desde o lançamento da versão 1.0, em fevereiro de 2002, até a versão 4, em março de 2010. Depois, eu também apresentei a principal novidade da linguagem C# 5: suporte direto da linguagem à programação assíncrona. Este novo recurso permite que o desenvolvedor realize programação assíncrona de modo similar à programação síncrona. Além disto, eu também comentei sobre as principais novidades esperadas para a versão posterior (C# 6?), que atualmente é conhecida pelo nome de projeto Roslyn.
O Java Persistence API(JPA) é um framework utilizado para realizar a persistência dos objetos Java, com ele foi possível obter uma padronização na forma de persistir os dados. A implementação mais conhecida atualmente é o Hibernate, onde é possível diminuir a complexidade de uma aplicação Java – baseada no modelo Orientado a Objetos – para banco de dados que utilizam uma abordagem relacional.
Presentation given by Sergio Figueiras from Ramón Domínguez Foundation in the framework of the Emergence Forum Barcelona
Biocat organized the Barcelona Emergence Forum (April 10-11th, 2014, Congress Palace, Montjuïc) supported by the TRANSBIO SUDOE, a translational cooperation project dedicated to innovation in life sciences in South-West Europe. The Barcelona Emergence Forum contributed to bringing together Academics, Companies, Investment Entities, Technology Platforms and Technology Transfer Offices from Spain, France and Portugal to set up collaborative projects on Human Health & Agro-food Innovation.
More information at: http://www.b2match.eu/emergenceforum2014
Presentation given by Manel Cascallo, from VCN Biosciences, in the framework of the Emergence Forum Barcelona
Biocat organized the Barcelona Emergence Forum (April 10-11th, 2014, Congress Palace, Montjuïc) supported by the TRANSBIO SUDOE, a translational cooperation project dedicated to innovation in life sciences in South-West Europe. The Barcelona Emergence Forum contributed to bringing together Academics, Companies, Investment Entities, Technology Platforms and Technology Transfer Offices from Spain, France and Portugal to set up collaborative projects on Human Health & Agro-food Innovation.
More information at: http://www.b2match.eu/emergenceforum2014
Presentation given by Bianca Pop from Tritecc in the framework of the Emergence Forum Barcelona
Biocat organized the Barcelona Emergence Forum (April 10-11th, 2014, Congress Palace, Montjuïc) supported by the TRANSBIO SUDOE, a translational cooperation project dedicated to innovation in life sciences in South-West Europe. The Barcelona Emergence Forum contributed to bringing together Academics, Companies, Investment Entities, Technology Platforms and Technology Transfer Offices from Spain, France and Portugal to set up collaborative projects on Human Health & Agro-food Innovation.
More information at: http://www.b2match.eu/emergenceforum2014
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
Nesta palestra, eu apresentei uma visão geral da evolução da linguagem de programação C# desde o lançamento da versão 1.0, em fevereiro de 2002, até a versão 4, em março de 2010. Depois, eu também apresentei a principal novidade da linguagem C# 5: suporte direto da linguagem à programação assíncrona. Este novo recurso permite que o desenvolvedor realize programação assíncrona de modo similar à programação síncrona. Além disto, eu também comentei sobre as principais novidades esperadas para a versão posterior (C# 6?), que atualmente é conhecida pelo nome de projeto Roslyn.
O Java Persistence API(JPA) é um framework utilizado para realizar a persistência dos objetos Java, com ele foi possível obter uma padronização na forma de persistir os dados. A implementação mais conhecida atualmente é o Hibernate, onde é possível diminuir a complexidade de uma aplicação Java – baseada no modelo Orientado a Objetos – para banco de dados que utilizam uma abordagem relacional.
Presentation given by Sergio Figueiras from Ramón Domínguez Foundation in the framework of the Emergence Forum Barcelona
Biocat organized the Barcelona Emergence Forum (April 10-11th, 2014, Congress Palace, Montjuïc) supported by the TRANSBIO SUDOE, a translational cooperation project dedicated to innovation in life sciences in South-West Europe. The Barcelona Emergence Forum contributed to bringing together Academics, Companies, Investment Entities, Technology Platforms and Technology Transfer Offices from Spain, France and Portugal to set up collaborative projects on Human Health & Agro-food Innovation.
More information at: http://www.b2match.eu/emergenceforum2014
Presentation given by Manel Cascallo, from VCN Biosciences, in the framework of the Emergence Forum Barcelona
Biocat organized the Barcelona Emergence Forum (April 10-11th, 2014, Congress Palace, Montjuïc) supported by the TRANSBIO SUDOE, a translational cooperation project dedicated to innovation in life sciences in South-West Europe. The Barcelona Emergence Forum contributed to bringing together Academics, Companies, Investment Entities, Technology Platforms and Technology Transfer Offices from Spain, France and Portugal to set up collaborative projects on Human Health & Agro-food Innovation.
More information at: http://www.b2match.eu/emergenceforum2014
Presentation given by Bianca Pop from Tritecc in the framework of the Emergence Forum Barcelona
Biocat organized the Barcelona Emergence Forum (April 10-11th, 2014, Congress Palace, Montjuïc) supported by the TRANSBIO SUDOE, a translational cooperation project dedicated to innovation in life sciences in South-West Europe. The Barcelona Emergence Forum contributed to bringing together Academics, Companies, Investment Entities, Technology Platforms and Technology Transfer Offices from Spain, France and Portugal to set up collaborative projects on Human Health & Agro-food Innovation.
More information at: http://www.b2match.eu/emergenceforum2014
Kotlin - Evolua seu código Java (TDC-2016) Alex MagalhaesAlex Magalhaes
Nesta palestra, Alex Magalhães apresenta detalhes da linguagem Kotlin, uma novo linguagem para ambientes Java e Android. Além de exemplos de código, inclui um exemplo completo de um projeto de Web API usando Kotlin e Spring.
Essa apresentação foi feita para introduzir a linguagem de consulta GraphQL, sendo uma das possíveis alternativas para arquiteturas REST. Sobre o graphQL: "O GraphQL é uma linguagem de consulta para APIs e um tempo de execução para atender essas consultas com os dados existentes. O GraphQL fornece uma descrição completa e compreensível dos dados em sua API, oferece aos clientes o poder de solicitar exatamente o que eles precisam e nada mais, facilita a evolução das APIs ao longo do tempo e permite poderosas ferramentas de desenvolvedor." (traduzido de https://graphql.org/)
O PL/SQL é uma linguagem de acesso a dados relacionais para o SGBD da Oacle.
Elá fornece um conjunto de funções que facilitam a vida do desenvolvedor no momento da criação dos programas, além do que, por ser executada dentro do SGBD não é necessário que movimentar os dados entre aplicação de banco de dados, tornando a execução bem mais rápida.
Criando operators para Kubernetes usando Go - v2Matheus Moraes
Palestra apresentada no Golang SP, link da palestra: https://www.youtube.com/watch?v=TfrNmPPNMuk
Alguns slides possuem o link para um Gif de demonstração
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
4.
Palavras chave
● Derivadas do SQL
● Não diferenciadas por maiúsculas/minúsculas (mas
as classes e atributos são !)
5.
Palavras chave: from
A query mais simples do HQL:
from <classe> [apelido]
retorna todas as instâncias daquela classe.
Ex:
from br.ita.finep.icammh.domain.ResultadoColeta
from br.ita.finep.icammh.domain.ResultadoColeta rc
6.
Palavras chave: select
Seleciona objetos e propriedades a serem
retornados no result set:
select <objetos.propriedades> from …
Ex:
select rc.id, rc.nomeArquivo
from
br.ita.finep.icammh.domain.ResultadoColeta rc
7.
Palavras chave: where
Acrescentra condições para filtragem do result set:
select … from … where <condição>
Ex:
select rc.id, rc.nomeArquivo
from
br.ita.finep.icammh.domain.ResultadoColeta rc
where rc.id>20
8.
Outras Palavras chave
● order by: ordenação do result set
● group by: agrupamento do result set
Ex:
select tamanho from
br.ita.finep.icammh.domain.CampoParametro
group by tamanho
9.
Junções Implícitas
● Objetos visíveis podem ser referenciados
diretamente.
Ex:
select rc.coleta.nome, rc.coleta.tipoColeta.nome
from
br.ita.finep.icammh.domain.ResultadoColeta rc
where rc.id < 200
10.
Junções Explícitas
● Use a palavra chave join para explicitar a junção e
definir apelidos
Ex:
select col.nome, col.tipoColeta.nome
from
br.ita.finep.icammh.domain.ResultadoColeta rc
join rc.coleta col
where rc.id < 200
12.
Expressões suportadas em
condições
● Operadores matemáticos: +, , *, /
● Comparadores lógicos: =, >=, <=, <>, !=, like, in,
not in, between, is null, is not null, is empty, is
not empty, member of and not member of
● Operações lógicas: and, or, not
● Parenteses indicando agrupamento: ( )
● Case: case ... when ... then ... else ... end
14.
Expressões suportadas em
condições
● Conversão de tipo: cast(... as ...), extract(... from ...)
● Parâmetros posicionais e nomeados: ?, :nomePar
● Operações em coleções: [any, some, all, exists]
elements(), indices(), size(), minelement(),
maxelement(), minindex(), maxindex(),
● Qualquer função suportada pelo SQL do BD
destino: sign(), trunc(), rtrim(), sin()
16.
Interface Query
● Regras de retorno no result set:
● Se não existe cláusula select
● Se a cláusula from referencia uma única classe, cada
linha do result set é uma instância dessa classe.
● Se a cláusula from referencia mais de uma classe, o
result set é composto por Object[] onde cada entrada
é uma instância de cada classe referenciada.
● Se existe a cláusula select
● Com um único elemento, cada linha do result set é
uma instância desse elemento.
● Com vários elementos, cada linha do result set é um
Object[] onde cada entrada é uma instância de cada
elemento.
17.
Retornando Instâncias de
VOs
● É possível criar instâncias de value objects
diretamente no HQL:
select new <ClasseVO>(...) from …
Ex:
select new
br.ita.finep.icammh.sad.common.PerfilVO(p.id,
p.nome)
from br.ita.finep.icammh.domain.Perfil p
18.
Outros retornos
● O result set pode ser um um list, usandose
“select new list(...)”
● O result set pode ser um map, usandose
“select new map(...)”
19.
Update & Delete
● Sintaxe semelhante ao SQL: ( update | delete)
[from] EntityName (where <condições>)
Ex:
delete br.ita.finep.icammh.domain.Coleta col
where col.id > 2000000
update br.ita.finep.icammh.domain.Coleta col set
col.nomeArquivo=:novoNomeArquivo where
col.id > 2000000
20.
Interface Query
● O HQL é executado a partir de uma instância de
org.hibernate.Query, obtida da instância do Session
Query query = session.createQuery("from Book");
List books = query.list();
…
Query query = session.createQuery("from Book");
Iterator itBooks = query.iterate();
...
Query query = session.createQuery("from Book where isbn=:isbn");
query.setString("isbn", "1932394419");
Book book = (Book) query.uniqueResult();
22.
Performance HQL
● Métodos que influenciam na performance:
...
query.setFirstResult(20);
...
query.setMaxResults(10);
...
query.setFetchSize(100);
● O método uniqueResult retorna o objeto único que a query
retorna, null se o result set é vazio, ou dispara a exceção
NonUniqueResultException caso o result set retorne
mais de uma instância.
23.
Queries nomeadas
● Podese colocar as queries dentro dos arquivos de
mapeamento (*.hbm.xml), atribuindo nomes.
Ex:
<hibernatemapping>
<query name="Book.by.isbn">
<![CDATA[from Book where isbn = ?]]>
</query>
</hibernatemapping>
…
Query query = session.getNamedQuery("Book.by.isbn");
query.setString(0, "1932394419");
Book book = (Book) query.uniqueResult();
24.
HQL & Andromda
● Para escrever queries HQL diretamente no modelo,
crie um método na <<Entity>> marqueo como
“Query” e escreva a query no valor etiquetado
@andromda.hibernate.query
● Os parâmetros do método devem ter o mesmo nome
dos parâmetros dentro da query.
● Podese retornar um Collection ou uma classe
específica, nesse caso o método uniqueResult() da
interface org.hibernate.Query é usado.
25.
Hibernate Criteria Queries
● Mecanismo de consultas 100% Java.
● Indicado para situações onde a query deve ser
criada dinamicamente.
● A sessão corrente retorna instâncias da Criteria
através do método createCriteria.
Ex:
Criteria criteria = session.createCriteria(Book.class)
List books = criteria.list();
Equivale a:
Query query=session.createQuery(“from Book”);
List books = query.list();
27.
Expressões Lógicas
● Podem ser expressas com Restrictions.and,
Restrictions.or ou Restrictions.conjunction e
Restrictions.disjunction.
Ex:
Criteria criteria=
session.createCriteria(
br.ita.finep.icammh.domain.Perfil.class);
Disjunction dj=Restrictions.disjunction();
dj.add(Restrictions.le("id",10L));
dj.add(Restrictions.ge("id",50L));
criteria.add(dj);
criteria.list();
32.
Criteria desacoplada da
sessão
● A classe org.hibernate.criterion.DetachedCriteria
permite a criação de consultas desacopladas da
sessão
Ex:
DetachedCriteria dc=DetachedCriteria.forClass(
br.ita.finep.icammh.domain.PerfilCampos.class);
dc.add(Restrictions.lt("id",10L));
dc.getExecutableCriteria(session).list();
34.
Criteria & Andromda
● Use o estereótipo <<Criteria>> para criar classes
que representem consultas na persistência
35.
Criteria & Andromda
● O cartucho Hibernate gera uma classe Search para
facilitar a criação de consultas no código Java, e
os DAOs gerados contém métodos para a
execução dessas consultas.
Ex:
38.
Hibernate & Jasper Reports
● O Jasper Reports suporta HQL de forma nativa
● O Jasper Reports pode receber um Collection de
beans como base de dados para o relatório,
portanto podese um passar o resultado da
execução de uma Criteria (ou de uma
<<Criteria>>)