Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouVinícius Nobre de Almada Alterado mais de 8 anos atrás
1
Application Server & EJB3 Wesley Gonçalves da Silva wesleygsilva@yahoo.com.br http://balaprata.blogspot.com
2
JPA – Java Persistence API Perguntas e Respostas
3
3 Consultas Além do mapeamento e do CRUD, é fundamental que tenhamos meios de recuperar objetos (dados). A linguagem para isso nos bancos relacionais é a SQL – Structured Query Language -, cuja a intenção sempre foi de simplificar o acesso aos dados dentro do banco, informado “o quê”, sem que o “usuário” se preocupasse com o “como”. Declarativa.
4
4 Consultas class Query1 { public static void main (String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance(); String url = "jdbc:odbc:meusCdsDb"; Connection conn = DriverManager.getConnection(url,“usr",“psw"); Statement stmt = conn.createStatement(); ResultSet rs; rs = stmt.executeQuery("SELECT Lname FROM Customers WHERE Snum = 2001"); while ( rs.next() ) { String lastName = rs.getString("Lname"); System.out.println(lastName); } conn.close(); } catch (Exception e) { System.err.println("Got an exception! "); System.err.println(e.getMessage()); }
5
5 Consultas Na especificação JPA está prevista uma interface padronizada chamada Query para representar o resultado de buscas realizadas e também especifica uma linguagem para consulta:JPQL (também chamada de EJB-QL) Como ponto-chave básico de diferença para o SQL, nos referenciamos a objetos e, com isso, muitos comandos acabam sendo simplificados se comparados a um equivalente em SQL
6
6 Consultas Uma Query é criada a partir do EntityManager (o grande mago do JPA) Desde as versões anteriores do EJB já existia a especificação da EJB-QL, porém era muito limitada tendo aplicabilidade para questões mais simples. Conclusão: Escrevia SQL direto!
7
7 Consultas – Se parece com...
8
8 Consultas - Exceções De maneira geral as exceções ligadas a JPA são RuntimeException, ou seja, Unchecked O que significa que você não tem obrigação de capturá-las em blocos try/catch, porém o compilador também não te ajuda O interessante dessa abordagem é que você tratará o que realmente for relevante. É uma decisão de projeto!
9
9 Consultas – API
10
10 Consultas – API
11
JPA – Java Persistence API Teoria e Prática
12
12 Um pequeno exemplo de apoio
13
13 Consulta com parâmetros
14
14 Consulta com parâmetros Crie as classes devidamente anotadas em um novo projeto eclipse Crie uma consulta para recuperar os fornecedores, a partir do seu nome
15
15 Consulta Paginada
16
16 Consulta Paginada Baseando-se na consulta anterior, adicione paginação. Exiba a lista recuperada na console
17
17 Consulta Navegando
18
18 Consulta Navegando A partir de uma conta a pagar conhecida, recupere o nome do fornecedor, navegando pelo relacionamento entre eles
19
19 Consulta com construtor
20
20 Consulta com construtor Este recurso é um dos mais importantes, pois oferece flexibilidade (liberdade) que as aplicações precisam para suas consultas, mantendo as facilidades da jpa
21
21 Consulta com construtor Crie uma consulta com construtor com os dados: descrição da conta, valor e nome do fornecedor para contas pagas
22
22 Muitas Consultas
23
23 Muitas Consultas Crie uma consulta para exibir as contas dos fornecedores. Quantas consultas foram realizadas ao banco de dados? Crie uma outra consulta similar usando o “LEFT JOIN FETCH”. Quantas consultas foram feitas?
24
24 Operadores Navegação: “.” Aritméticos: “+”; “-”; “*”; “/” Comparação: =, >, >=,, like, between, in, is null, is empty, member of Lógico: NOT, AND, OR
25
25 Operadores Consulte as contas com valor maior que $100 Consulte as contas que não foram pagas
26
26 Like
27
27 Like Faça uma consulta para listar todos os fornecedores que tenham a palavra “teste” na sua descrição
28
28 Funções (I) - String
29
29 Funções (II) - Números
30
30 Funções (III) – Data CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP
31
31 Funções Crie consultas para exercitar o uso das funções (ao menos 1 consulta para cada grupo de função)
32
32 Funções de Agregação
33
33 Funções de Agregação Conte a quantidade de fornecedores Some o total de contas Informe a conta mais cara
34
34 Ordem!
35
35 Ordem! Recupere os fornecedores por ordem alfabética
36
36 Nome aos Bois Queries nomeadas são especialmente úteis para consultas pré-definidas (ex.: Funcionários que entram de férias no próximo mês) Anotadas em nível de classe A classe tem que ser uma @Entity Podem suportar parâmetros
37
37 Nome aos Bois Nome ÚNICO da consulta A consulta em si Lista de consultas cada consulta Pode ter parâmetros!
38
38 Nome aos Bois Crie queries nomeadas para suas entidades, uma para cada, com a respectiva exibição dos dados recuperados
39
39 Nome aos Bois, nativos De maneira similar, existe @NamedNativeQueries/ @NamedNativeQuery SQL!
40
JPA – Java Persistence API Teoria e Prática
41
JPA – Java Persistence API Um pouco de organização
42
42 DAO Data Access Object – Padrão criado para abstrair a complexidade de recuperação dos dados de uma fonte de dado qualquer (ex.: SGBD-R, XML) Pergunta: Preciso de DAO?
43
43 DAO class Query1 { public static void main (String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance(); String url = "jdbc:odbc:meusCdsDb"; Connection conn = DriverManager.getConnection(url,“usr",“psw"); Statement stmt = conn.createStatement(); ResultSet rs; rs = stmt.executeQuery("SELECT Lname FROM Customers WHERE Snum = 2001"); while ( rs.next() ) { String lastName = rs.getString("Lname"); System.out.println(lastName); } conn.close(); } catch (Exception e) { System.err.println("Got an exception! "); System.err.println(e.getMessage()); }
44
44 DAO public class Dao { private Class classePersistente; private EntityManager em; public Dao(EntityManager em, Class aClasse){ this.em = em; this.classePersistente = aClasse; } public void create(T t){ em.persist(t); } public T retrieve(Long id){ return (T) em.find(classePersistente, id); }
45
45 DAO Pergunta: Preciso de DAO? CRUD? Posso usar o EntityManager... Para consultas específicas? Até faz sentido... Atenção quanto a herança... Composição não seria melhor? O seu DAO específico teria o DAO genérico como atributo e somente os métodos de interesse seriam delegados...
46
JPA – Java Persistence API Um pouco de organização
47
47 Exercícios 1) Liste prós e contras comparando SQL e JPQL 2) Faça cada exercício sugerido para o tópico “teoria e prática” 3) Crie o seu DAO genérico e realize os testes para o CRUD 4) Como deve ser feito para acessar uma “stored procedure” usando a JPA. Entenda “JPA” como um requisito para a sua solução.
48
48 Exercícios - Especial Considerando o modelo a seguir faça:
49
49 Exercícios - Especial 1) Crie todas as classes devidamente anotadas – padrão jpa – e crie o respectivo modelo físico no banco de dados 2) Crie os “Manager´s” para o modelo. Defina o seu critério e justifique a sua escolha para cada “manager” criado. 3) Defina uma padronização para as suas consultas nomeadas. 4) Crie consultas nomeadas para recuperar: a)Pessoas que nasceram num intervalo de datas; b)Lista de telefones de quem mora no bairro “COPACABANA”; c)A lista de pessoas que estão pendentes de devolução; d)A lista de pessoas que possuem contas começadas com “A”; e)Itens mais emprestados.
50
50 Exercícios - Especial 5) Crie consultas dinâmicas considerando os seguintes filtros: a) Pessoas com nome contendo uma letra qualquer e/ou nascimento em uma determinada data; b) xxxxxxxxx 6) Escolha duas consultas da questão 4 e as escreva usando consulta nomeada nativa. Compare com as consultas JPQL e dê sua impressão. 7) Escreva testes unitários para “exercitar” todos os métodos dos seus managers, inclusive para o acesso as consultas.
51
JPA – Java Persistence API Perguntas e Respostas
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.