aplicaÇÕes de linguagem de programaÇÃo orientada a objetos acesso a banco de dados com o jdbc...

32
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique [email protected] http://thiagorique.wordpress.com/

Upload: internet

Post on 17-Apr-2015

134 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

ACESSO A BANCO DE DADOS COM O JDBC

Prof. Thiago Pereira Rique

[email protected]

http://thiagorique.wordpress.com/

Page 2: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

AGENDA

Introdução A conexão em Java Manipulando bancos de dados com o JDBC PreparedStatements DAO – Data Access Object

Page 3: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

INTRODUÇÃO

Banco de dados

Sistema de Gerenciamento de Banco de Dados (SGBD)

Linguagem SQL

Java Database Connectivity (JDBC) API

Page 4: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

A CONEXÃO EM JAVA

Temos um único conjunto de interfaces muito bem definidas que devem ser implementadas.

Esse conjunto de interfaces fica dentro do pacote java.sql e nos referimos a ele como JDBC.

Aplicação BDInterface JDBCImplementação JDBC. Qual?

Page 5: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

A CONEXÃO EM JAVA

A interface Connection define métodos para executar uma query, fechar uma conexão, entre outros.

Precisamos de classes concretas que implementem essas interfaces do pacote java.sql.

Esse conjunto de classes concretas fará a ponte entre o código cliente que usa a API JDBC e o banco de dados.

Drivers JDBC.

Page 6: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

A CONEXÃO EM JAVA

Para abrir uma conexão com um banco de dados, precisamos de um driver.

A classe DriverManager é responsável por se comunicar com o driver.

Aplicação BDInterface JDBCImplementação JDBC PostgreSQL

DriverManager.getConnection(“jdbc:postgresql://localhost/teste”);

Page 7: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Criando uma classe de conexão (1)

Continua...

Page 8: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Criando uma classe de conexão (1)

Page 9: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Criando uma classe de conexão (2)

Page 10: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Objeto Connection con;

Objetos Connection permitem aos programas criar instruções de SQL que acessem bancos de dados;

Método static getConnection da classe DriveManager;

O método getConnection aceita três argumentos: URL Usuário Senha

Page 11: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

URL “jdbc:postgresql://localhost:5432/

alpoo_lpbd_2012_2” Protocolo de comunicação (jdbc) Subprotocolo de comunicação (postgresql) Localização do banco de dados

(//localhost:5432/alpoo_lpbd_2012_2)

Fábrica de conexões: controlar um processo repetitivo e trabalhoso, como abrir uma conexão com o banco de dados.

Page 12: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Consultando um banco de dados

Continua...

Page 13: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Consultando um banco de dados

Continua...

Page 14: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Consultando um banco de dados

Continua...

Page 15: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Consultando um banco de dados

Continua...

Page 16: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Consultando um banco de dados

Continua...

Page 17: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Consultando um banco de dados

Page 18: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Método Connection prepareStatement.

Utilização de um objeto PreparedStatement para enviar instruções de SQL ao banco de dados.

Método execute do objeto PreparedStatement para submeter uma consulta.

Page 19: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

MANIPULANDO BANCOS DE DADOS COM O JDBC

Método executeQuery do objeto PreparedStatement retorna um objeto que implementa ResultSet.

Um objeto ResultSet contém os dados da consulta.

Métodos ResultSet permitem que o programa manipule o resultado da consulta.

Page 20: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

PREPAREDSTATEMENTS

A interface PreparedStatements permite criar instruções SQL compiladas.

PreparedStatements podem especificar parâmetros, o que os torna mais flexíveis do que Statements.

Permitem realizar a mesma consulta repetidamente com diferentes valores de parâmetros.

Page 21: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

PREPAREDSTATEMENTS

Exemplo:

Os pontos de interrogação são espaços reservados para valores que serão passados como parte da consulta ao banco de dados.

Page 22: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

PREPAREDSTATEMENTS

Especificar valores de parâmetro utilizando métodos set da interface PreparedStatement.

Primeiro argumento: número do parâmetro configurado.

Segundo argumento: valor do parâmetro.

Page 23: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

PREPAREDSTATEMENTS

Má prática: Statement

Um Statement simplesmente executa uma cláusula SQL no método execute.

Um PreparedStatement é mais rápido e deixa seu código muito mais limpo.

Page 24: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

DAO – DATA ACCESS OBJECT

Padrões de Projeto (Design Patterns)

Alguns problemas aparecem com tanta frequência que as pessoas desenvolvem uma solução “padrão” para eles.

Essa solução padrão tem o nome de Design Pattern (Padrão de Projeto).

A nossa ConnectionFactory implementa o design pattern Factory que prega o encapsulamento da construção (fabricação) de objetos complexos.

Page 25: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

DAO – DATA ACCESS OBJECT

Colocar código SQL nas classes de lógica da aplicação Deselegante Inviável para manter o código

A ideia é remover o código de acesso ao banco de dados de suas classes de lógica e colocá-lo em uma classe responsável pelo acesso aos dados.

Page 26: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

DAO – DATA ACCESS OBJECT

Considere a seguinte classe de conexão:

Page 27: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

DAO – DATA ACCESS OBJECT

Considere a classe Contato a seguir:

Page 28: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

DAO – DATA ACCESS OBJECT

Classe ContatoDAO:

Continua...

Page 29: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

DAO – DATA ACCESS OBJECT

Classe ContatoDAO:

Page 30: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

DAO – DATA ACCESS OBJECT

Classe de teste:

Page 31: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

DAO – DATA ACCESS OBJECT

Através de uma única classe seremos capazes de acessar o banco de dados.

A ideia é isolar todo o acesso a banco em classes bem simples.

Objetos dessas classes são responsáveis por acessar os dados (DAO – Data Access Object).

Page 32: APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique thiagorique2011@gmail.com

REFERÊNCIA

DEITEL, H.M; Java Como Programar. Ed. Pearson, 8ª ed, 2010.

Apostilas Caelum fj-21. Disponível em: http://www.caelum.com.br/