Você está na página 1de 16

Persistncia em Projetos de Aplicaes Web

Java e BD

Alceu Lus de Andrade Melo (2012)

Mecanismos de Persistncia

O estado de um objeto (seus atributos) devem ser salvos para uso futuro Em aplicaes web o estado do objeto pode ser mantido no servidor de aplicaes (aplicao/sesso)... mas se perde se ele for reiniciado preciso algum mecanismo de persistncia(!):

Sistema de arquivos BD Relacional (via JDBC) BD Orientado a Objetos

Alceu Lus de Andrade Melo (2012)

Mecanismos de Persistncia
Sistema de arquivos

Muito trabalhoso Difcil de gerenciar Usado para fins especficos (logs...)

Alceu Lus de Andrade Melo (2012)

Mecanismos de Persistncia
BD Relacional (via JDBC)

Muito difundido... muito bem aceito no mercado. Interoperabilidade com inmeras ferramentas No se enquadra bem a objetos. Ferramentas de mapeamento objeto-relacional podem ser utilizadas (Hibernate / OJB). Lida com a presena de strings de consulta (SQL) no cdigo.
Alceu Lus de Andrade Melo (2012)

Mecanismos de Persistncia

BD Orientado a Objetos

potencialmente a soluo ideal. Armazena os objetos diretamente no BD. No necessita de ferramentas de mapeamento. Na prtica algumas questes interessantes:

Integridade referencial Transaes Interoperabilidade com ferramentas do mercado

Comea a ser utilizado... ser que algum dia superar o BD Relacional?


Alceu Lus de Andrade Melo (2012)

Banco de Dados Relacionais e as Aplicaes Web

Cdigo pode ser focado no BD ou no Objeto Quando usar cdigo focado no BD:

O BD pr-existente Modelo de objetos reflete o BD...

Quando usar cdigo focado no Objeto:


Ao projetar uma nova aplicao O BD reflete o modelo de objetos Ter uma escolha aberta para o projeto e a plataforma de banco de dados utilizada

Alceu Lus de Andrade Melo (2012)

A ponte JDBC

1 2

Alceu Lus de Andrade Melo (2012)

JDBC

Oferece uma maneira padronizada de acessar BDs relacionais API est em java.sql O cdigo escrito deve funcionar com qualquer BD relacional Mas que tenha um driver ODBC (quando utilizar a ponte JDBC:ODBC) Ou que possua um driver Java nativo (JDBC nativo)
Alceu Lus de Andrade Melo (2012)

JDBC
Utilizando o BD

Carregar o driver Conectar ao BD Criar uma Statement (instruo) Executar a Statement Tratar o ResultSet (resultado da query)

Alceu Lus de Andrade Melo (2012)

JDBC
Carregar o Driver
Class.forName("oracle.jdbc.OracleDriver");

...Isto especifica o driver a ser carregado

Este drive pode ser utilizado nas prximas chamadas de


DriverManager.getConnection();

Alceu Lus de Andrade Melo (2012)

JDBC
Criar a Conexo
Connection con = DriverManager.getConnection( "jdbc:oracle:thin:@cdi2k3bd:1521:oracdi", "scott", "tiger" );

Especifica a URL do BD, o usurio e a senha

Alceu Lus de Andrade Melo (2012)

JDBC
Cria e Executar a Statement (instruo)
Statement stm = con.createStatement();

Uma Statement utilizada para executar chamadas de SQL no BD Os mtodos comuns para execuo so:
ResultSet res = stm.executeQuery(String query); int nRows = stm.executeUpdate(String update);

Alceu Lus de Andrade Melo (2012)

JDBC

Tratar o ResultSet (resultado da query)


Gerar uma interao no ResultSet Extrair dados de cada tupla:


ResultSet res = stm.executeQuery( "SELECT DESCRICAO FROM PRODUTOS" ); while ( res.next() ) { out.println( res.getString("DESCRICAO") ); }

Utilizamos getString para o campo DESCRICAO mas existem mtodos que retornam outros tipos consulte a API
Alceu Lus de Andrade Melo (2012)

JDBC
ResultSet Metadata (metadados)

Metadados: dados sobre os dados Os metadados do ResultSet incluem nmeros de colunas e nome de cada coluna Pode-se utilizar os metadados para escrever cdigos mais inteligentes / simplificados Por exemplo: visualizadores de tabelas

Alceu Lus de Andrade Melo (2012)

JDBC
Design

Pode ser inserido em qualquer lugar no cdigo (inclusive no JSP) O melhor que todo o cdigo de acesso ao BD esteja em classes separadas: padro DAO

Alceu Lus de Andrade Melo (2012)

Referncias

Website do curso CC292 Web Application Programming, Department of Computing and Electronic Systems, University of Essex, Colchester, United Kingdom. http://courses.essex.ac.uk/CC/cc292/. Acessado em 20/10/2008. Website Java SE Technologies Database, Sun Developer Network (SDN), http://java.sun.com/javase/technologies/database/index.jsp . Acessado em 23/10/2008. Menon, R. M. Expert Oracle JDBC Programming. New York, Apress, 2005.

Alceu Lus de Andrade Melo (2012)