1. Java Web
*Slides do primeiro módulo do Curso Formação Java Web da 3Way Networks
Todos direitos reservados a 3Way Networks
2. Java WEB
Aula 01
– Banco de Dados Relacionais
– SQL
– JDBC
Páginas: 8 à 16
Todos direitos reservados a 3Way Networks
3. Bancos de Dados Relacionais
• Mídia de armazenamento escolhida por muitas aplicações
baseadas na WEB que requerem conteúdo dinâmico.
• Sintaxe básica necessária para recuperar e manipular dados
armazenados, de fácil aprendizado.
• Possui suporte muito difundido pela indústria.
• Armazena registros como conjuntos relacionados.
O processo de armazenagem e captura de dados em um banco
é chamado de persistência.
Todos direitos reservados a 3Way Networks
4. Bancos de Dados Relacionais: Tabelas
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
TABELA – COMPRA
ID ID_CLIENTE COD_PRODUTO QTD
100 1003 2556 5
101 1008 1242 8
102 1004 56 2
103 2056 65995 1
Todos direitos reservados a 3Way Networks
5. • Tabelas de bancos de dados são projetadas com restrições
lógicas para preservar a consistência de seus dados
– Assinalação de tipos de dados
– Singularidade
– Outros
Bancos de Dados Relacionais: Tabelas
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
ID tipo Integer
NOME, ENDERECO tipo VARCHAR
CPF tipo CHAR(11) E ÚNICO
Todos direitos reservados a 3Way Networks
6. Comandos SQL
• Operações em bancos de dados relacionais são realizadas por
meio do uso de SQL ( Structured Query Language, ou
Linguagem de Consulta Estruturada )
• Há diversos tipos de comandos de SQL
• Entre estes:
– Recuperação de dados
– Manipulação de dados
Todos direitos reservados a 3Way Networks
7. Recuperação de Dados
• Focado na leitura de dados a partir de uma ou mais tabelas no
banco de dados
– Pode ser aberta para recuperar TODOS os conjuntos de
dados
– Pode ser parametrizada com valores conhecidos
• Somente um comando SQL abrange este tipo: SELECT
Todos direitos reservados a 3Way Networks
8. Comando SELECT
É usado para selecionar dados nas tabelas do banco de dados.
SELECT coluna(s) FROM nomeTabela where condição(ões)
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
SELECT * FROM clientes WHERE ID = '1004';
Resultado:
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
Todos direitos reservados a 3Way Networks
9.
10. Cláusula FROM e União de Tabelas
• Define em uma declaração SELECT as tabelas a partir das
quais os dados serão reunidos
– Se o dados vem de uma só tabela
– Se o dados vem de mais de uma tabela
• Tabelas podem ser separadas por meio de vírgulas
• Modo mais simples entretanto, o desempenho classifica os
dados mais lentamente.
• Executa um produto cartesiano nas tabelas
• Exemplo:
dadas duas tabelas, clientes e compra, união é executada por
... FROM clientes, compra
where clientes.id = compra.id_cliente ...
Todos direitos reservados a 3Way Networks
11. União de Tabelas
• Usando uma das várias palavras-chave
– JOIN
– LEFT JOIN
– RIGHT JOIN
– INNER JOIN
• Exemplos:
FROM tabela1 JOIN tabela2 on tabela1.id = tabela2.id
FROM tabela1 LEFT JOIN tabela2 on tabela1.id = tabela2.id
FROM tabela1 RIGHT JOIN tabela2 on tabela1.id = tabela2.id
FROM tabela1 INNER JOIN tabela2 on tabela1.id = tabela2.id
Todos direitos reservados a 3Way Networks
12. Exemplo de União de Tabelas
Dadas as tabelas clientes e compra:
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
TABELA – COMPRA
ID ID_CLIENTE COD_PRODUTO QTD
100 1003 2556 5
101 1008 1242 8
102 1004 56 2
103 2056 65995 1
Todos direitos reservados a 3Way Networks
13. Exemplo de União
A união dessas tabelas resulta em um plano cartesiano com
união de todos os registros das duas tabelas.
UNIÃO DE CLIENTES COM COMPRA
ID NOME ENDERECO CPF ID ID_CLIENTE COD_PRODUTO QTD
1003 JOAO AFONSO RUA 200 02153565584 100 100 1003 2556
1003 JOAO AFONSO RUA 200 02153565584 101 101 1008 1242
1003 JOAO AFONSO RUA 200 02153565584 102 102 1004 56
1003 JOAO AFONSO RUA 200 02153565584 103 103 2056 65995
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584 100 100 1003 2556
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584 101 101 1008 1242
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584 102 102 1004 56
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584 103 103 2056 65995
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984 100 100 1003 2556
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984 101 101 1008 1242
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984 102 102 1004 56
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984 103 103 2056 65995
Todos direitos reservados a 3Way Networks
14. União de Tabelas
LEFT JOIN
ID NOME ENDERECO CPF ID ID_CLIENTE COD_PRODUTO QTD
1003 JOAO AFONSO RUA 200 02153565584 100 1003 2556 5
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584 102 1004 56 2
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
• LEFT JOIN, a união utilizando este comando implica em trazer
todos os registros de CLIENTE não sendo obrigatório existir
dados na tabela COMPRA unidas com LEFT, mas se tiver
resultado, então deve ser recuperado a COMPRA junto com o
registro do respectivo CLIENTE. Se o cliente não tiver feito
nenhuma compra, então as colunas de COMPRA vem vazias.
SELECT * FROM cliente
LEFT JOIN compra ON cliente.ID = compra.ID_CLIENTE
Todos direitos reservados a 3Way Networks
15. União de Tabelas
• RIGHT JOIN, é exatamente o inverso do uso do LEFT JOIN, ou
seja, será recuperado todos os registros da tabela COMPRA e
para as compras que tiver CLIENTE, então os dados do CLIENTE
será recuperado, caso contrária retornará vazio.
SELECT * FROM cliente
RIGHT JOIN compra ON cliente.ID = compra.ID_CLIENTE
RIGHT JOIN
ID NOME ENDERECO CPF ID ID_CLIENTE COD_PRODUTO QTD
1003 JOAO AFONSO RUA 200 02153565584 100 1003 2556 5
101 1008 1242 8
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584 102 1004 56 2
103 2056 65995 1
Todos direitos reservados a 3Way Networks
16. União de Tabelas
• INNER JOIN, a união utilizando este comando implica em trazer
somente os resultados quando existir nas duas tabelas
relacionadas. Para o nosso caso só será retornado os CLIENTES
que fizeram COMPRAS e as COMPRAS que possuem
CLIENTES cadastrados.
SELECT * FROM cliente
INNER JOIN compra ON cliente.ID = compra.ID_CLIENTE
INNER JOIN
ID NOME ENDERECO CPF ID ID_CLIENTE COD_PRODUTO QTD
1003 JOAO AFONSO RUA 200 02153565584 100 1003 2556 5
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584 102 1004 56 2
Todos direitos reservados a 3Way Networks
17.
18. União de Tabelas
• Na maioria dos casos, uma INNER JOIN rende os resultados
mais relevantes para operações de união
• A casos onde as entradas de uma tabela deveriam aparecer não
importando a existência de dados de outra tabela, a utilização de
LEFT JOIN ou RIGHT JOIN é mais apropriada
• Evite usar união delimitada por vírgulas
• É mais simples e conveniente de escrever união de tabelas
utilizando palavras-chave
Todos direitos reservados a 3Way Networks
19. Cláusula WHERE
• Especifica uma condição que deve ser casada pelas entradas
na tabela selecionada para que elas sejam utilizadas como filtro
para o resultado
• Operadores lógicos podem ser usados:
= (igualdade)
<= (menor ou igual) , < (menor)
>= (maior ou igual), > (maior)
like - executa comparação para campos texto:
% - utilizado para indicar que após e/ou antes do carácter pode-
se ter qualquer valor, dependendo da posição utilizada
Todos direitos reservados a 3Way Networks
20. Exemplos de declarações SELECT
• Recupera todas colunas e dados disponíveis na tabela Clientes:
SELECT * FROM clientes;
• Retorna somente a coluna ENDERECO da tabela Clientes com
a coluna Nome o valor igual JOAO AFONSO:
SELECT ENDERECO FROM cliente WHERE NOME = 'JOAO
AFONSO';
• Retorna todos as colunas da tabela Clientes com o valor da
coluna Nome iniciado por 'S':
SELECT * FROM clientes WHERE NOME LIKE 'S%';
Todos direitos reservados a 3Way Networks
21. Manipulação de Dados
• Usado para modificar o valor de dados dentro de tabelas.
• Comandos SQL podem ser:
– Comando INSERT
– Comando UPDATE
– Comando DELETE
Todos direitos reservados a 3Way Networks
22. Comando INSERT
• Comando utilizado para inserir dados na tabela:
• Deve seguir as regras de integridade da tabela, ou seja, não
tentar inserir uma string em um campo inteiro.
• Sintaxe:
INSERT INTO tabela
VALUES ('VALOR1', 'VALOR2', ..., 'VALORn');
INSERT INTO tabela ( CAMPO1, CAMPO2, ... CAMPOn )
VALUES ( 'VALORC1', 'VALORC2', ... 'VALORCn' )
Todos direitos reservados a 3Way Networks
23. Comando INSERT
INSERT INTO clientes
VALUES('2006','JOSE JUNIOR','PRAÇA DA VIDA, '52147844174')
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
2006 JOSE JUNIOR PRAÇA DA VIDA 52147844174
Todos direitos reservados a 3Way Networks
24. Comando INSERT
INSERT INTO clientes
(CPF, ID, ENDERECO, NOME)
VALUES ('2365412394','2007','RUA JACA','MARIA MARTA')
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
2006 JOSE JUNIOR PRAÇA DA VIDA 52147844174
2007 MARIA MARTA RUA JACA 2365412394
Todos direitos reservados a 3Way Networks
25. Comando UPDATE
• Comando utilizado quando se quer alterar dados em uma
tabela
• Quaisquer atualizações devem ser conforme as regras de
integridade no banco de dados
• Sintaxe:
UPDATE tabela SET coluna(s)
UPDATE tabela SET coluna(s) WHERE condição
Todos direitos reservados a 3Way Networks
26. Data a tabela produtos:
Comando UPDATE
PRODUTOS
ID PRODUTO PRECO
56 PASTA DENTAL 2,55
1242 DESODORANTE 8,78
2556 MOUSE 12,35
65995 COTONETE 1,65
UPDATE produtos
SET PRECO = PRECO * 1.1
Atualizá-la
aumentando os
valores dos produtos
em 10%.
PRODUTOS
ID PRODUTO PRECO
56 PASTA DENTAL 2,81
1242 DESODORANTE 9,66
2556 MOUSE 13,58
65995 COTONETE 1,82
Todos direitos reservados a 3Way Networks
27. Comando UPDATE
UPDATE clientes
SET CPF = '32365412394' WHERE ID = '2007'
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
2006 JOSE JUNIOR PRAÇA DA VIDA 52147844174
2007 MARIA MARTA RUA JACA 2365412394
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
2006 JOSE JUNIOR PRAÇA DA VIDA 52147844174
2007 MARIA MARTA RUA JACA 32365412394
Todos direitos reservados a 3Way Networks
28.
29. Comando DELETE
• Se nenhuma condição for dada, o comando elimina todos os
registros na tabela especificada.
• Sintaxe:
DELETE FROM tabela WHERE condição(ões)
Todos direitos reservados a 3Way Networks
30. DELETE FROM clientes
WHERE ID = '2006' OR ID = '2007'
Comando DELETE
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
2006 JOSE JUNIOR PRAÇA DA VIDA 52147844174
2007 MARIA MARTA RUA JACA 32365412394
TABELA – CLIENTES
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
Todos direitos reservados a 3Way Networks
31. JDBC – Java DataBase Connectivity
• Biblioteca padrão que fornece acesso a bancos de dados por
meio de Java
• Desenvolvedores podem acessar bancos de dados não
importando quem é o distribuidor
– Distribuidores fornecem a implementação para interfaces
abstratas definidas na API
– Fornece o mesmo conjunto de funcionalidades para o
desenvolvedor
Todos direitos reservados a 3Way Networks
32. • java.sql.Connection: Representa uma conexão com um banco
de dados
• java.sql.DriverManager: Gerencia drivers JDBC usados pela
aplicação
• java.sql.Statement: Fornece métodos para o desenvolvedor
executar instruções SQL
• java.sql.ResultSet: Representa o resultado de uma instrução
SQL de Pesquisa
JDBC – Java DataBase Connectivity
Todos direitos reservados a 3Way Networks
33. java.sql.DriverManager
• Permite que um desenvolvedor recupere um objeto Connection
que pode ser usado para executar instruções em bancos de
dados.
• O Driver JDBC deve estar registrado com o DriverManager
• Usar o método getConnection em DriverManager para criar
uma conexão com o banco.
DriverManager.getConnection(UrlBD, UsuBD, PassBD);
Todos direitos reservados a 3Way Networks
36. java.sql.Connection / java.sql.Statement
• Objetos da classe java.sql.Connection representam conexões
criada para o banco de dados.
• Uma vez de posse deste objeto, criamos um objeto da classe
Statement, que usamos para executar consultas SQL.
– ExecuteQuery: para execução de comandos SELECT,
retornando o resultado de operações como um objeto
ResultSet.
– ExecuteUpdate: para execução de comandos INSERT,
UPDATE ou DELETE, retornando um int com o número de
colunas afetadas com a execução do comando.
Todos direitos reservados a 3Way Networks
37. java.sql.ResultSet
• Contém o resultado de uma consulta no banco de dados.
• Um objeto ResultSet pode ser visualizado como uma tabela.
• A informação é recuperada uma coluna por vez.
• O objeto ResultSet mantém a coluna corrente.
• Para percorrer as linhas da tabela em ResultSet, usamos o
método next().
Todos direitos reservados a 3Way Networks
40. Executando uma Consulta
Resultado da consulta seria:
JOAO AFONSO :: 02153565584
MARIA JOSEFINA :: 69535412584
JOSE BARBOSA :: 96524136984
Todos direitos reservados a 3Way Networks
42. Executando uma Inserção
ID NOME ENDERECO CPF
1003 JOAO AFONSO RUA 200 02153565584
1004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584
2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984
2008 AFONSO JOSE RUA BELEZA 98555687425
Todos direitos reservados a 3Way Networks
43.
44. Liberando Recursos do Sistema
• Este é um passo muito importante que freqüentemente é
negligenciado após ter sido completada uma operação no Banco
de Dados.
• Deve ser feita explicitamente e é uma responsabilidade do
programador.
• Sem executar a liberação, os recursos tomados pela operação
não podem ser usadas no futuro.
• Para aplicações muito grandes, isto rapidamente resulta na
perda de conexões disponíveis.
Todos direitos reservados a 3Way Networks
45. • Executada quando chamado o método close() disponível em
cada objeto das classes Connection, Statement, e ResultSet
– Existe uma ordem específica envolvida
– O método close está definido para lançar uma
SQLException
• Erros comuns dos desenvolvedores: colocar simplesmente os
métodos dentro do corpo do try do programa
• Somente recorrer a condições de bem sucedidas
• O código deve ser colocado dentro de uma cláusula finally
Liberando Recursos do Sistema
Todos direitos reservados a 3Way Networks