Aula 1 - JDBC - Conceitos Básicos

Propaganda
API JDBC
Paulo Ricardo Lisboa de Almeida
1
Universidade Positivo
JDBC
JDBC
Java Database Connectivity
API Java para conexões com bancos de dados
Encontrada dentro de java.sql
2
Universidade Positivo
JDBC
Necessário driver JDBC do banco
Classes concretas da API
O driver é o responsável por “traduzir” os comandos para o
banco
3
Universidade Positivo
Criando uma Tabela no Banco de Dados
Primeiramente vamos criar uma tabela que representa uma
pessoa
4
Universidade Positivo
O Driver Manager e a String de Conexão
DriverManager – Classe para gerência de drivers JDBC
Connection – Interface que representa a conexão com um
banco de dados
Connection con =
DriverManager.getConnection("jdbc:stringConexao",
"usuario", "senha");
5
Universidade Positivo
O Driver Manager e a String de Conexão
DriverManager – Classe para gerência de drivers JDBC
Connection – Interface que representa a conexão com um
banco de dados
Connection con =
DriverManager.getConnection("jdbc:stringConexao",
"usuario", "senha");
Obs.: getConnection não funciona sem o driver no BuildPath
6
Universidade Positivo
Encerrando a conexão
Após o uso, a conexão sempre deve ser encerrada
try{
if(connection != null)
connection.close();
}catch(Exception e){
e.printStackTrace();
}
7
Universidade Positivo
Criando SQLs
PreparedStatement
Invocado através de Connection
Representa uma instrução SQL
Liberar os recursos depois da utilização
statement.close();
8
Universidade Positivo
Criando SQLs
Vamos rodar uma SQL simples e estática diretamente no
nosso código:
"delete from pessoa where pessoa_id=4"
E se quisermos generalizar, para que o usuário digite o id da
pessoa que deverá ser removido?
9
Universidade Positivo
Criando SQLs
Vamos rodar uma SQL simples e estática diretamente no
nosso código:
"delete from pessoa where pessoa_id=4"
E se quisermos generalizar, para que o usuário digite o id da
pessoa que deverá ser removido?
Poderíamos armazenar o id em uma string e concatenar
Exemplo:
"delete from pessoa where pessoa_id= " + strID
10
Universidade Positivo
Criando SQLs
Vamos rodar uma SQL simples e estática diretamente no
nosso código:
"delete from pessoa where pessoa_id=4"
E se quisermos generalizar, para que o usuário digite o id da
pessoa que deverá ser removido?
Poderíamos armazenar o id em uma string e concatenar
Exemplo:
"delete from pessoa where pessoa_id= " + strID
Problemas?
11
Universidade Positivo
Criando SQLs
Vamos rodar uma SQL simples e estática diretamente no
nosso código:
"delete from pessoa where pessoa_id=4"
E se quisermos generalizar, para que o usuário digite o id da
pessoa que deverá ser removido?
Poderíamos armazenar o id em uma string e concatenar
Exemplo:
"delete from pessoa where pessoa_id= " + strID
Problemas?
SQL Injection e complexidade no código
Para evitar isso, utilizamos parameters
12
Universidade Positivo
Criando uma Fábrica de Conexões
Criando um Factory de Conexões
Porque um factory?
13
Universidade Positivo
Criando uma Fábrica de Conexões
Criando um Factory de Conexões
Porque um factory?
Encapsulamento de construção de um objeto complexo
14
Universidade Positivo
Criando Beans
O Bean deve representar uma entidade
Classe Java que expõe propriedades, seguindo uma
convenção de nomeclatura simples para os métodos getter
e setter.
tipo getPropriedade()
void setPropriedade(tipo novoValor)
Construtor default
Os tipos devem ser compatíveis com os armazenados no
banco de dados
Exemplo: um campo varchar deve ser mapeado para uma
String Java, ou para um vetor de caracteres
15
Universidade Positivo
Recuperando Informações Armazenadas
A interface ResultSet para recuperar informações
armazenadas
Conjunto de Resultados de uma consulta
Inicia com um cursor apontando para a primeira linha
Método next() passa para a próxima linha, retornando
false se o Resultset não possui mais resultados
Liberar os recursos
resultSet.close();
16
Universidade Positivo
Criando DAOs
Criando DAOS
Data Access Object
Design Pattern
Abstrair e encapsular todos os acessos ao data source
17
Universidade Positivo
Criando uma interface IGenericDAO
public interface IGenericDAO<T,U> {
public void inserir(T objeto) throws Exception;
public List<T> listar() throws Exception;
public T buscar(U id) throws Exception;
public void atualizar(T objeto) throws Exception;
public void remover(T objeto) throws Exception;
}
18
Universidade Positivo
Criando mais algumas tabelas
19
Universidade Positivo
Criando uma busca eager
Ao carregar um animal, podemos carregar juntamente o seu
tipo
A maneira mais eficiente de se fazer isso é através de um
inner join, em uma única consulta
20
Universidade Positivo
Fim!
Resolva os exercícios propostos até a próxima aula!
21
Universidade Positivo
Download