Transcript
Page 1: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´[email protected]

SJCP

Java Avançado

Conceitos de aplicações que acessam banco de dados

Page 2: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

O que é um Banco de Dados?

• É um software capaz de armazenar, atualizar e disponibilizar, de forma segura e eficiente, conjuntos de dados

• Há vários tipos de BD: Relacionais, Orientado a Objetos, etc...

• Nas aplicações de hoje em dia, se sobressai o uso de banco de dados relacionais, que são aquele que conhecem e fazem valer leis que regem as relações entre os dados

Page 3: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

O que é um Banco de Dados?

• Um BD relacional é constituído de várias databases, que são espécie de ilhas de dados

• DataBases são compostas de tabelas, view e podem ser acessadas por vários usuários (de formas diferentes!)

• Quando JDBC se conecta a um banco de dados relacional, ele faz isso acessando especificamente uma determinada database

• No nosso curso, usaremos um banco de dados relacional MySQL

Page 4: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

O que é uma tabela?

• Tabela, ou entidade, é uma estrutura que define como os dados serão armazenados

• Por exemplo, nossa tabela Tab_Clientes

Page 5: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

O que é uma tabela?

• Tabelas possuem nomes únicos dentro da database

• Ela é composta de campos (conhecidos também como atributos)

• Esses campos possuem características. Essas características dependem do tipo do campo

• Deve existir, em toda tabela, um campo especial, chamado de Chave Primária (primary key)

Page 6: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

O que é uma tabela?

• Costumamos dizer que uma tabela possui vários registro, cada registro possui dados no formato dos campos da tabela

Page 7: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

Chave Primária – Primary Key

• Conceito essencial para o entendimento do funcionamento e uso de banco de dados

• Dentro de uma tabela, não poderá haver dois registro com o mesmo valor de PK

• Uma PK identifica unicamente um registro

• Podem ser simples ou composta

Page 8: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

Chave Primária – Primary Key

• Valores de negócio, como nº de CPF, RG ou telefone não devem ser usados como PK, mesmo que sejam “Chaves de Negócio”

• No nosso exemplo, a PK é o campo código

• Assim, não existe dois clientes com o mesmo código

• Campos auto-increment são ótimas chaves

• Chaves primárias otimizam as consultas ao banco, simplificando o trabalho da aplicação e do BD

• Toda tabela deve ter uma!

Page 9: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

Relacionamentos

• Uma tabela pode se relacionar com outra

• Por exemplo, podemos armazenar todos os números de telefone dos nossos clientes

• Como um cliente pode possuir vários números de telefone, temos um relacionamento do tipo 1-para-N (ou 1-para-muitos)

• Como exemplo, implementamos isso com uma tabela nova chamada tab_telefone

Page 10: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

Relacionamentos• A tab_telefone é uma tabela como outra qualquer• Seus campos podem ser de qualquer tipo• Entretanto, o banco precisa saber como relacionar um determinado

telefone a um determinado cliente• Isto é feito através das Chaves Estrangeiras (Forein Key - FK)

Page 11: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

Chave Estrangeira

• É um campo de um registro que identifica um outro registro de outra tabela.

• Em uma tabela, é possível ter vários registros com o mesmo valor para uma chave estrangeira

• Um tabela pode possuir várias FK

• O valor de uma FK é o valor da PK do registro associado na outra tabela

Page 12: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

Chave Estrangeira

1

N

Page 13: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

Relacionamentos• Existem relacionamentos do tipo um-para-um, um-para-muitos e muitos-

para-muitos

• O banco pode ter ferramentas para garantir a “Integridade Referencial”

• Por exemplo, o banco pode garantir que não exista nunca um telefone associado a um cliente que não exista

• Existem umas ferramentas de cascade que devem ser usadas com cuidados

• Isto pode ser feito também na aplicação, pode ser feito no BD e na aplicação (ruim), ou em nenhum dos dois (péssimo)

Page 14: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

Exemplo: TesteRelacionamento.java

• A principal diferença desse exemplo par ao anterior está na consulta SQL:

• A diferença aqui é a cláusula INNER JOIN

Page 15: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

TesteRelacionamento.java• INNER JOIN serve para avisar ao banco de dados como ele deve

relacionar a tabela tab_clientes à tabela tab_telefone

• Várias tabelas podem ser relacionadas dentro de uma mesma instrução

• INNER JOIN deteriora enormemente a performance do banco, use com cuidado

• Normalmente, é possível quebra uma instrução com INNER JOIN em várias outras, melhorando a performance da aplicação

Page 16: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

TesteRelacionamento.java

• A forma de acessar os campos do registro permaneceu inalterada

• Obviamente, aumentamos a quantidade de campos

Page 17: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

TesteRelacionamento.java

• Criamos um método também somente para conectar. Isto é uma boa prática e facilitará nosso trabalho daqui para frente

Page 18: Conceitos de aplicações que acessam banco de dados

Luiz Carlos d´Oleron – [email protected]

TesteRelacionamento.java

• Atente para a exceção java.sql.SQLException

• Os métodos da API JDBC normalmente lançam java.sql.SQLException para avisar sobre problemas na infra-estrutura ou na forma da aplicação acessar o banco

• Podemos lançar também java.sql.SQLException, de forma a deixar o código mais homogêneo.


Recommended