0% acharam este documento útil (0 voto)
15 visualizações29 páginas

A04 - JDBC

O documento aborda conceitos fundamentais de SGBD, SQL e JDBC, destacando a importância da manipulação de dados em bancos relacionais. Ele detalha a configuração do driver JDBC para MySQL, a execução de comandos SQL e a implementação de uma fábrica de conexões. Além disso, enfatiza boas práticas, como o uso de arquivos de propriedades para facilitar a manutenção do código.

Enviado por

sapiwa4608
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
15 visualizações29 páginas

A04 - JDBC

O documento aborda conceitos fundamentais de SGBD, SQL e JDBC, destacando a importância da manipulação de dados em bancos relacionais. Ele detalha a configuração do driver JDBC para MySQL, a execução de comandos SQL e a implementação de uma fábrica de conexões. Além disso, enfatiza boas práticas, como o uso de arquivos de propriedades para facilitar a manutenção do código.

Enviado por

sapiwa4608
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 29

JDBC I

1 de 29 LPOO II – UFPR/SEPT
Conteúdo da aula
Conceitos Manipulação de Dados
1. SGBD 9. Inserindo Dados
2. SQL 10. Consultando Dados
3. JDBC 11. Atualizando Dados
4. Mapeamento de Tipos 12. Excluindo Dados
Conexão 13. Mapeamento de tipos principais
5. Classe Driver Manager 14. Fechando Recursos Automaticamente
6. Testar a conexão Fábrica de Conexões
7. Driver JDBC 15. Introdução
8. Testar a conexão 16. Implementação Simplificada
17. Implementação com propriedades em
arquivo
2 de 29 LPOO II – UFPR/SEPT
SGBD
◉ Sistema de gerenciamento de banco (SGBD) de dados é o conjunto de
software que fornece acesso gerenciado a uma base de dados,
responsabilizando-se por controlar, acessar, organizar e proteger as
informações de uma aplicação.
◉ Podem ser Relacionais (tabelas, linhas, colunas e registros) e Não-Relacionais
(sem estrutura definida previamente)
◉ Utilizaremos somente SGBDs relacionais nessa disciplina.
Utilizaremos o
◉ Capacidades de um SGBD: MySQL nessa
✓ Persistência Exemplos: disciplina.
✓ Capacidade de consulta • MySQL
✓ Concorrência • PostgeSQL
✓ Backup e replicação • SQL Server
✓ Imposição de regras • IBM DB2
✓ Segurança • Oracle
✓ Cálculos • MariaDB
✓ Registro em log de acessos e alterações
✓ Otimização automatizada
3 de 29 LPOO II – UFPR/SEPT
SQL
◉ SQL (Structured Query Language): É uma linguagem com sintaxe definida e padronizada entre
os SGBDs. Ela engobla os comandos para manipulação do conteúdo dados (inclusão, exclusão,
consultas e atualizações), da segurança dos dados e das estruturas dos dados em um SGBD.

SQL

SUBCONJUNTOS SQL DQL DML DDL DCL DTL

INSERT CREATE BEGIN


GRANT
COMANDOS SQL SELECT UPDATE ALTER
REVOKE
COMMIT
DELETE DROP ROLLBACK

Partiremos do princípio que o aluno já conhece a linguagem SQL e os comando básicos.


Tutorial para estudo: https://www.w3schools.com/sql/default.asp
A próxima disciplina irá aprofundar os conceitos para SGBD.
4 de 29 LPOO II – UFPR/SEPT
SQL

5 de 29 LPOO II – UFPR/SEPT
SQL

6 de 29 LPOO II – UFPR/SEPT
JDBC
◉ O JDBC (Java Database Conectivity) é a API (conjunto de interfaces) do Java
que contém os elementos necessários para que uma aplicação Java possa
acessar SGBD relacionais;
✓ Utiliza extensivamente a SQL (Structured Query Language);
◉ Esta API é composta pelos pacotes java.sql e javax.sql, os quais fazem parte do
JavaSE;
◉ Com JDBC é possível:
✓ Conectar-se em uma fonte de dados, mais comumente o banco de dados
✓ Enviar queries e updates para o banco de dados
✓ Receber e processar os resultados provenientes de consultas aos bancos de dados
◉ Cabe ao programador escrever o código SQL que deverão especificar as
operações de consulta, inclusão, remoção ou alteração de dados;

7 de 29 LPOO II – UFPR/SEPT
JDBC

8 de 29 LPOO II – UFPR/SEPT
JDBC

9 de 29 LPOO II – UFPR/SEPT
Classe DriverManager

10 de 29 LPOO II – UFPR/SEPT
Classe DriverManager
◉ URL de Conexão

SGBDR URL

Derby jdbc:derby://hostname:1527/database

Firebird jdbc:firebirdsql://hostname:3050/database

HSQLDB jdbc:hsqldb:hsql://hostname:9001/database

ODBC jdbc:odbc:datasource

Oracle jdbc:oracle:thin@hostname:1526:database

MySQL jdbc:mysql://hostname/database

Postgre jdbc:postgresql://localhost/database

11 de 29 LPOO II – UFPR/SEPT
Testar a conexão

Máquina onde o
SGBD está Nome do Data Base Usuário e senha
executando.

A exceção está indicando que não foi encontrado o driver jdbc


12 de 29 correspondente. Precisamos
LPOObaixa-lo e configurá-lo no projeto.
II – UFPR/SEPT
Driver JDBC
◉ Passo1: Nosso SGBD é MySQL, então precisamos buscar o
driver JDBC na página do fornecedor:
✓ https://dev.mysql.com/downloads/connector/j/

◉ A versão 8.3.0 é compatível com a versão 8.0.36 do MySQL


que estamos utilizando
13 de 29 LPOO II – UFPR/SEPT
Driver JDBC
◉ Passo 2: Selecione “Plataform Independent”

◉ Passo 3:
Clique em “Download” para
o arquivo .zip

14 de 29 LPOO II – UFPR/SEPT
Driver JDBC
◉ Passo 4: Clique no link “No thanks, just start my download.”

15 de 29 LPOO II – UFPR/SEPT
Driver JDBC
◉ Passo 5: Procure pelo arquivo baixado.

◉ Passo 6: Extraia os arquivos compactados e na pasta mysql-conector-j-8.3.0 localize o arquivo


mysql-connector-j-8.3.0.jar

◉ Passo 7: Copie esse arquivo para uma pasta qualquer. No passo seguinte usaremos esse
caminho para configurar o projeto do Netbeans. Nesse caso coloquei nessa pasta:

16 de 29 LPOO II – UFPR/SEPT
Driver JDBC
◉ Passo 8: Configurar o driver JDBC no ◉ Passo 9: Nas janela de propriedades
NetBeans. Abra o NetBeans e clique do projeto vá em “Libraries” e clique
com o botão direito do mouse em cima no botão “+” ao lado da palavra
do nome do projeto. Selecione a última Classpath. No menu que se abre
opção do menu: “Properties” clique em “Add JAR/Folder”.

17 de 29 LPOO II – UFPR/SEPT
Driver JDBC
◉ Passo 10: Encontre o arquivo na mesma ◉ Passo 11: Agora o driver (arquivo
pasta do passo 7. Clique em “Open” .jar) está configurado no caminho de
classes do projeto (classpath). Clique
em “OK”

18 de 29 LPOO II – UFPR/SEPT
Testar a conexão

19 de 29 LPOO II – UFPR/SEPT
Inserindo Dados
PreparedStatement permite
Obtém a conexão definir um comando SQL que
será pré-compilado no
Prepara o comando SGBDR, permitindo sua
execução eficiente;

Primeira linha

O comando SQL preparado


pode conter um ou mais
Segunda linha parâmetros de entrada,
representados pelo símbolo
de ? (interrogação);
Fecha comando e conexão
Os parâmetros de entrada
devem ser fornecidos antes
de cada execução do
comando SQL preparado

20 de 29 LPOO II – UFPR/SEPT
Consultando Dados

Obtém a conexão

Prepara o comando

Executa a query
O Resultset é um cursor
para o resultado da
consulta. O método next
Percorre o cursor do resultado
retorna true se a próxima
linha existe.

Fecha comando e conexão

21 de 29 LPOO II – UFPR/SEPT
Atualizando Dados

Obtém a conexão

Prepara o comando

Executa o update

Fecha comando e conexão

22 de 29 LPOO II – UFPR/SEPT
Excluindo Dados

Obtém a conexão

Prepara o comando

Executa o delete

Fecha comando e conexão

23 de 29 LPOO II – UFPR/SEPT
Mapeamento de tipos principais
Tipo Java Tipo MySQL Método escrita Método Leitura
(Classe PreperadStatement) (Classe ResultSet)
java.lang.String VARCHAR void setString(int parameterIndex, String x) String getString(int columnIndex)
Exemplo: Exemplo:
stmt.setString(1, “Rafael”); String nome = rs.getString(1);
int INT void setInt(int parameterIndex, int x) int getInt(int columnIndex)
Exemplo: Exemplo:
stmt.setInt(1, 2); int id = rs.getInt(1);
long INT void setLong(int parameterIndex, long x) long getLong(int columnIndex)
Exemplo: Exemplo:
stmt.setLong(1,5L); long numero = rs.getLong(1);
double DOUBLE void setDouble(int parameterIndex, double x) double getDouble(int columnIndex)
Exemplo: Exemplo:
stmt.setDouble(1,5.5); double salario = rs.getDouble(3)
java.util.LocalDate DATE void setDate(int parameterIndex, java.sql.Date x) java.sql.Date getDate(int columnIndex)
Exemplo: Exemplo:
stmt.setDate(3, LocalDate data =
Date.valueOf(LocalDate.of(1976,8,15))); rs.getDate(4).toLocalDate()

24 de 29 LPOO II – UFPR/SEPT
Fechando recursos automaticamente

Tabalhar com exceções SQL e fechamento de conexões,


resultset e statements, pode se tornar um trabalho que
demande muitas linhas de código. Por isso devemos
utilizar o try com recursos, conforme demonstrado
abaixo. Ao finalizar o try, independente de exceções, os
recuros serão fechado.

25 de 29 LPOO II – UFPR/SEPT
Padrão Factory para Conexão
◉ Encapsula a lógica de criação de objetos em uma classe separada,
conhecida como “fábrica”.
◉ Fornece uma maneira mais flexível e extensível de criar objetos,
sem a necessidade de expor diretamente a lógica de criação ao
código cliente.
◉ Abstrai os detalhes de conexão com diferentes bancos de dados,
usando uma interface comum para todos eles.
◉ Facilita a troca de bancos de dados sem alterar o código cliente,
apenas mudando a implementação da fábrica.
◉ Reduz a complexidade e o acoplamento do código cliente, que
só precisa solicitar os objetos à fábrica, sem se preocupar com a
sua criação.

26 de 29 LPOO II – UFPR/SEPT
Fábrica de Conexões: Implementação Simplificada
Construtor privado
para garantir que não
será instanciada.

Método estático que


retorna uma conexão.

Uso da fábrica de
conexões.

27 de 29 LPOO II – UFPR/SEPT
Fábrica de Conexões: Implementação com propriedades em arquivo

◉ Para criar arquivo de propriedades no NetBeans


Passo 1: Clique com o botão direito no pacote. No nosso caso “aula41”. Clique em “New” e
depois “Other”

Passo 2: Em “Categories”: clique em “Ohter”. Passo 3: Digite um nome para o arquivo.


Em “File Types” clique em “Properties File”. Por Nesse caso “DataBase” e clique em “Finish”
último, nessa tela clique no botão “Next”

28 de 29 LPOO II – UFPR/SEPT
Fábrica de Conexões: Implementação com propriedades em arquivo
Por que ler os atributos de um arquivo .properties?
• Se houver modificação na URL de conexão, no dirver, no
usuário do banco de dados, na senha, você não precisará
recompilar o código.
• É uma boa prática de programação deixar as
configurações em um arquivo e não dentro do código.
Importante:
• Nossa classe ConnectionFactory ainda não está
preparada para uso em uma aplicação comercial.
• Teríamos que implementar métodos para controlar um
pool de conexões.
• Existem drivers que contém métodos prontos para isso.

Pode ocorrer
exceção ao ler
arquivo de
properties.

29 de 29 LPOO II – UFPR/SEPT

Você também pode gostar