Curso Java Web

46
Java Web *Slides do primeiro módulo do Curso Formação Java Web da 3Way Networks Todos direitos reservados a 3Way Networks

description

Slides Java Web faz parte do curso Formação Java Web da 3Way Networks! A apostila pode ser encontrada no Scribd.

Transcript of Curso Java Web

Page 1: Curso Java Web

Java Web

*Slides do primeiro módulo do Curso Formação Java Web da 3Way Networks

Todos direitos reservados a 3Way Networks

Page 2: Curso Java Web

Java WEB Aula 01

– Banco de Dados Relacionais

– SQL

– JDBC

Páginas: 8 à 16

Todos direitos reservados a 3Way Networks

Page 3: Curso Java Web

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

Page 4: Curso Java Web

Bancos de Dados Relacionais: Tabelas

TABELA – CLIENTES

ID NOME ENDERECO CPF

1003 JOAO AFONSO RUA 200 02153565584

1004 MARIA JOSEFINA RUA DOS AFLITOS 695354125842005 JOSE BARBOSA AV. DEPENDENCIA 96524136984

TABELA – COMPRAID ID_CLIENTE COD_PRODUTO QTD

100 1003 2556 5101 1008 1242 8102 1004 56 2103 2056 65995 1

Todos direitos reservados a 3Way Networks

Page 5: Curso Java Web

• 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 695354125842005 JOSE BARBOSA AV. DEPENDENCIA 96524136984

ID tipo Integer NOME, ENDERECO tipo VARCHAR CPF tipo CHAR(11) E ÚNICO

Todos direitos reservados a 3Way Networks

Page 6: Curso Java Web

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

Page 7: Curso Java Web

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

Page 8: Curso Java Web

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 695354125842005 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

Page 9: Curso Java Web
Page 10: Curso Java Web

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

Page 11: Curso Java Web

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

Page 12: Curso Java Web

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 695354125842005 JOSE BARBOSA AV. DEPENDENCIA 96524136984

TABELA – COMPRAID ID_CLIENTE COD_PRODUTO QTD

100 1003 2556 5101 1008 1242 8102 1004 56 2103 2056 65995 1

Todos direitos reservados a 3Way Networks

Page 13: Curso Java Web

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 QTD1003 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

Page 14: Curso Java Web

União de Tabelas

LEFT JOINID 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

Page 15: Curso Java Web

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 JOINID 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

Page 16: Curso Java Web

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

Page 17: Curso Java Web
Page 18: Curso Java Web

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

Page 19: Curso Java Web

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

Page 20: Curso Java Web

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

Page 21: Curso Java Web

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

Page 22: Curso Java Web

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

Page 23: Curso Java Web

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 695354125842005 JOSE BARBOSA AV. DEPENDENCIA 96524136984

TABELA – CLIENTESID NOME ENDERECO CPF

1003 JOAO AFONSO RUA 200 021535655841004 MARIA JOSEFINA RUA DOS AFLITOS 695354125842005 JOSE BARBOSA AV. DEPENDENCIA 965241369842006 JOSE JUNIOR PRAÇA DA VIDA 52147844174

Todos direitos reservados a 3Way Networks

Page 24: Curso Java Web

Comando INSERT

INSERT INTO clientes

(CPF, ID, ENDERECO, NOME)

VALUES ('2365412394','2007','RUA JACA','MARIA MARTA')

TABELA – CLIENTESID 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

Page 25: Curso Java Web

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

Page 26: Curso Java Web

Data a tabela produtos:

Comando UPDATE

PRODUTOS

ID PRODUTO PRECO

56 PASTA DENTAL 2,551242 DESODORANTE 8,78

2556 MOUSE 12,3565995 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,811242 DESODORANTE 9,66

2556 MOUSE 13,5865995 COTONETE 1,82

Todos direitos reservados a 3Way Networks

Page 27: Curso Java Web

Comando UPDATE

UPDATE clientes

SET CPF = '32365412394' WHERE ID = '2007'

TABELA – CLIENTES

ID NOME ENDERECO CPF

1003 JOAO AFONSO RUA 200 021535655841004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584

2005 JOSE BARBOSA AV. DEPENDENCIA 965241369842006 JOSE JUNIOR PRAÇA DA VIDA 52147844174

2007 MARIA MARTA RUA JACA 2365412394

TABELA – CLIENTES

ID NOME ENDERECO CPF

1003 JOAO AFONSO RUA 200 021535655841004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584

2005 JOSE BARBOSA AV. DEPENDENCIA 965241369842006 JOSE JUNIOR PRAÇA DA VIDA 52147844174

2007 MARIA MARTA RUA JACA 32365412394

Todos direitos reservados a 3Way Networks

Page 28: Curso Java Web
Page 29: Curso Java Web

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

Page 30: Curso Java Web

DELETE FROM clientes

WHERE ID = '2006' OR ID = '2007'

Comando DELETE

TABELA – CLIENTES

ID NOME ENDERECO CPF

1003 JOAO AFONSO RUA 200 021535655841004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584

2005 JOSE BARBOSA AV. DEPENDENCIA 965241369842006 JOSE JUNIOR PRAÇA DA VIDA 52147844174

2007 MARIA MARTA RUA JACA 32365412394

TABELA – CLIENTES

ID NOME ENDERECO CPF1003 JOAO AFONSO RUA 200 02153565584

1004 MARIA JOSEFINA RUA DOS AFLITOS 695354125842005 JOSE BARBOSA AV. DEPENDENCIA 96524136984

Todos direitos reservados a 3Way Networks

Page 31: Curso Java Web

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

Page 32: Curso Java Web

• 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

Page 33: Curso Java Web

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

Page 34: Curso Java Web

Executando uma Conexão

Todos direitos reservados a 3Way Networks

Page 35: Curso Java Web
Page 36: Curso Java Web

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

Page 37: Curso Java Web

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

Page 38: Curso Java Web

Executando uma Consulta

Todos direitos reservados a 3Way Networks

Page 39: Curso Java Web

Executando uma Consulta

Todos direitos reservados a 3Way Networks

Page 40: Curso Java Web

Executando uma Consulta

Resultado da consulta seria:

JOAO AFONSO :: 02153565584

MARIA JOSEFINA :: 69535412584

JOSE BARBOSA :: 96524136984

Todos direitos reservados a 3Way Networks

Page 41: Curso Java Web

Executando uma Inserção

Todos direitos reservados a 3Way Networks

Page 42: Curso Java Web

Executando uma Inserção

ID NOME ENDERECO CPF

1003 JOAO AFONSO RUA 200 021535655841004 MARIA JOSEFINA RUA DOS AFLITOS 69535412584

2005 JOSE BARBOSA AV. DEPENDENCIA 96524136984

2008 AFONSO JOSE RUA BELEZA 98555687425

Todos direitos reservados a 3Way Networks

Page 43: Curso Java Web
Page 44: Curso Java Web

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

Page 45: Curso Java Web

• 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

Page 46: Curso Java Web

FAZER LABORATÓRIO 1

Todos direitos reservados a 3Way Networks