Conex - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

Conex

Description:

Conex o com Bancos de Dados Carlos Bazilio Depto de Ci ncia e Tecnologia P lo Universit rio de Rio das Ostras Universidade Federal Fluminense – PowerPoint PPT presentation

Number of Views:57
Avg rating:3.0/5.0
Slides: 33
Provided by: uff47
Category:

less

Transcript and Presenter's Notes

Title: Conex


1
Conexão com Bancos de Dados
  • Carlos Bazilio
  • Depto de Ciência e Tecnologia
  • Pólo Universitário de Rio das Ostras
  • Universidade Federal Fluminense

2
Noção Geral
  • A aplicação chama a biblioteca JDBC
  • A biblioteca carrega o driver que entende o
    SGDB
  • Após, a aplicação pode se conectar e enviar
    requisições ao SGBD
  • Pacote principal java.sql

3
JDBC
  • Java Database Connectivity
  • Padrão de acesso a BDs relacionais através de
    Java
  • API comum
  • Os fabricantes de drivers JDBC implementam
    aspectos específicos
  • Qualquer aplicação Java pode acessar um SGBD
    através do JDBC
  • JDBC é semelhante ao ODBC, mas é escrito em Java.
  • "http//java.sun.com/javase/6/docs/api/java/sql/pa
    ckage-summary.html"

4
JDBC Tipos de drivers
  • Classe 1 Ponte ODBC-JDBC Aplicações para
    Windows com o BD registrado

5
JDBC Tipos de drivers Classe 1
  • ODBC fornece uma interface uniforme para que
    aplicações em Windows acessem bancos de dados de
    fornecedores diferentes
  • O JDK é distribuído com um driver desse tipo
  • Uma aplicação que utilize este drive se comunica
    indiretamente com o banco de dados através da
    ponte JDBC-ODBC
  • Este uso requer código nativo de acesso ao banco
    na máquina cliente.

6
JDBC Tipos de drivers
  • Classe 2 Acesso nativo Usa as bibliotecas
    client do SGBD

Aplicação
JDBC Driver Manager
Banco de Dados
API Nativa do Banco
7
JDBC Tipos de drivers Classe 2
  • Drivers híbridos, parcialmente escritos em Java,
    mas que também utilizam código nativo
  • Usualmente, são drivers nativos com um wrapper
    Java
  • Por utilizarem código nativo, também são menos
    portáveis.

8
JDBC Tipos de drivers
  • Classe 3 Acesso por middleware Não há
    necessidade de configuração da máquina cliente. A
    aplicação se comunica com o middleware através de
    sockets. O middleware converte a chamada de alto
    nível da API na chamada ao SGBD

Aplicação
Rede
Middleware ou Servidor
JDBC Driver Manager
Banco de Dados
9
JDBC Tipos de drivers Classe 3
  • Chamadas ao banco de dados através da rede,
    utilizando HTTP
  • A interação real com o banco de dados estaria
    entre os servidores de middleware e banco de
    dados
  • A aplicação é 100 Java.

10
JDBC Tipos de drivers
  • Classe 4 Acesso direto ao servidor utilizando-se
    o protocolo do próprio SGBD

Aplicação
Banco de Dados
Rede
JDBC Driver Manager
11
JDBC Tipos de drivers Classe 4
  • Drivers 100 Java
  • São portáveis e mais eficientes se comparados com
    os que exigem tradução
  • Diferentemente dos drivers da classe 3, estes
    implementam o acesso ao servidor utilizando
    bibliotecas da própria linguagem Java.

12
JDBC
  • 5 passos básicos
  • Registrar o driver na aplicação
  • Conectar no SGBD
  • Executar sentenças SQL e procedures
  • Processar o resultado recebido
  • Fechar a conexão
  • Principais classes da API
  • DriverManager, Connection, Statement, ResultSet
  • Referência http//java.sun.com/javase/6/docs/api/
    java/sql/package-summary.html

13
JDBC Passos Básicos
  • Registro do driver O driver é registrado
    automaticamente quando a classe é carregada na
    aplicação
  • Class.forName("org.postgresql.Driver") //
    PostgreSQL
  • Class.forName("com.mysql.jdbc.Driver") // MySQL
  • Inicializador estático que registra o driver

14
JDBC Passos Básicos
  • Conexão com o SGBD Após o registro do driver,
    precisamos fornecer informações ao DriverManager
    para a conexão
  • Connection con DriverManager.getConnection(url,
    login, senha)
  • url URL de conexão JDBC
  • jdbcpostgresql//localhost 5432/cursodb
  • jdbcmysql//localhost3306/cursodb
  • login usuário com direitos de acesso ao banco de
    dados
  • senha senha para autenticação.
  • Sintaxe geral de urls jdbcltsubprotocolgt//ltserv
    ergtltportgt/ltdatabasegt

15
JDBC Passos Básicos
  • Execução de sentenças SQL
  • Para a execução de sentenças devemos criar, por
    exemplo, um Statement e obter o resultado através
    de um ResultSet
  • Statement stmt con.createStatement()
  • ResultSet rs stmt.executeQuery(select from
    db.empregados e)
  • Neste caso, o resultado é armazenado num
    ResultSet e pode ser percorrido com métodos
    definidos nesta classe

16
JDBC Passos Básicos
  • Exemplo de estrutura básica de uma aplicação

17
import java.sql. public class AcessoBDSimples
public static void main(String args) try
Class.forName("org.postgresql.Driver") Co
nnection con (Connection) DriverManager.getConn
ection ("jdbcpostgresql//localhost5432/cursodb"
,"bazilio","bazilio") Statement stmt
con.createStatement() ResultSet rs
stmt.executeQuery("select from prod
p") while (rs.next()) System.out.print(
"Nome " rs.getString("PNAME")) System.out.
println("Cidade " rs.getString("CITY"))
stmt.close() con.close() catch
(ClassNotFoundException e) System.out.printl
n("A classe do driver de conexão não foi
encontrada!") catch (SQLException e)
System.out.println("O comando SQL não pode
ser executado!")
18
Alternativas para Criação de Sentenças
  • Statement executa consultas simples, sem
    parâmetros
  • Prepared Statement executa consultas
    pré-compiladas com ou sem parâmetros
  • PreparedStatement modificaTabela
    con.prepareStatement ("UPDATE TABELA SET CAMPO1
    ? WHERE CAMPO2 LIKE ? ")
  • modificaTabela.setInt(1, 75)
  • modificaTabela.setString(2, Sirius)
  • modificaTabela.executeUpdate()
  • Callable Statement executa chamadas à stored
    procedures
  • CallableStatement cs con.prepareCall ("call
    NOME_PROC")
  • ResultSet rs cs.executeQuery()

19
Exercício
  • Gere 1 tabela contendo os dados básicos de uma
    conta, insira manualmente (no SGBD) alguns
    clientes e liste estes clientes utilizando um
    programa em Java.

20
Padrões de Projeto
  • Um padrão de projeto é uma solução comum para um
    problema comum encontrado no desenvolvimento de
    software (Sun)
  • Sedimentação do conceito com o lançamento do
    livro Design Patterns Elements of Reusable
    Object-Oriented Software
  • Não está amarrado à nenhuma linguagem OO.

21
Padrões de Projeto (GoF Gang of Four)
22
Padrões de Projeto
  • A utilização desses padrões usualmente implica em
    algumas vantagens
  • Facilidade de comunicação padrões possuem nomes,
    os quais resumem uma solução que deve ser de
    conhecimento comum entre equipes de
    desenvolvimento
  • Credibilidade sua implementação estará
    utilizando soluções amplamente testadas e
    aprovadas
  • Facilidade de manutenção padrões tendem a
    reduzir o acoplamento entre componentes, o que
    implica num sistema de fácil manutenção
  • Não implica em códigos mais enxutos

23
Padrões de Projeto Exemplo Façade (Facade,
Fachada)
24
Exemplo de Uso do Façade
25
Exemplo de Uso do Façade
26
import java.util. / "Façade" / class
UserfriendlyDate GregorianCalendar gcal
public UserfriendlyDate(String dataGreg)
String a dataGreg.split("-")
gcal new GregorianCalendar(Integer.valueOf(a0)
.intValue(), Integer.valueOf(a1).i
ntValue()-1, Integer.valueOf(a2).intValue())
public void addDays(int days)
gcal.add(Calendar.DAY_OF_MONTH, days)
public String toString() return new
Formatter().format("1tY-1tm-1td",
gcal).toString() / "Client" / class
FacadePattern public static void
main(String args)
UserfriendlyDate d new UserfriendlyDate("1980-08
-20") System.out.println("Date "d)
d.addDays(20)
System.out.println("20 days after "d)
27
Padrões de Projeto
  • Usualmente são apresentados seguindo uma
    estrutura bem definida, como
  • Nome do padrão para facilitar a citação
  • Descrição do uso, apresentando o problema,
    contextualização e implicações
  • Solução para o problema apresentado, usualmente
    apresentada no formato de diagramas
  • Exemplo
  • Nome Façade
  • Descrição Necessário quando temos um conjunto de
    subsistemas e algumas funcionalidades como
    combinação destes subsistemas
  • Solução

28
Padrões de ProjetoLivro do GoF
  • Creational Patterns
  • Factory, Abstract Factory, Singleton, Builder,
    Prototype
  • Structural Patterns
  • Adapter, Bridge, Composite, Decorator, Façade,
    Flyweight, Proxy
  • Behavioral Patterns
  • Chain of Responsibility, Command, Interpreter,
    Iterator, Mediator, Momento, Observer, State,
    Strategy, Template, Visitor

29
Padrões J2EE
  • Inspiraram o surgimento de diversos novos
    padrões, os quais são comumente associados à
    linguagem Java
  • Entretanto, assim como os da GoF, não estão
    amarrados à nenhuma linguagem OO específica
  • http//www.corej2eepatterns.com/Patterns2ndEd/inde
    x.htm
  • Destes, podemos destacar o DAO (Data Access
    Object)

30
Padrões de Projeto - DAO
  • Visa a separação entre a lógica de acesso a dados
    da lógica do negócio
  • Com este padrão podemos utilizar diferentes
    fontes de dados e isolar a lógica de negócio de
    possíveis modificações na camada de acesso a
    dados
  • Ou seja, um DAO deve esconder todos os detalhes
    de implementação de acesso a fontes de dados.
  • Pode ser utilizada em diversos cenários (web,
    desktop, mobile, em aplicação distribuída ou
    centralizada)

31
Padrões de Projeto - DAO
32
DAO em Java
  • Neste caso, o padrão DAO é bastante útil para
    separar a lógica de negócio das diversas
    tecnologias de persistência existentes
  • JDBC, JDO, EJB CMP, TopLink, Hibernate, iBATIS,
    openJPA e muitas outras
  • Ou seja, com este padrão permitimos que estas
    tecnologias possam ser substituídas ou
    atualizadas sem prejuízo ao restante da aplicação
Write a Comment
User Comments (0)
About PowerShow.com