45
XV Simpósio Brasileiro de Bancos de Dados 2-6 de Outubro de 2000 João Pessoa - Paraíba, Brasil Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes Departamento de Informática e Matemática Aplicada Universidade Federal do Rio Grande do Norte

por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Embed Size (px)

Citation preview

Page 1: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

XV Simpósio Brasileiro de Bancos de Dados2-6 de Outubro de 2000

João Pessoa - Paraíba, Brasil

Integrando Java e Banco de Dados (Tutorial)

porJorge Henrique Cabral Fernandes

Departamento de Informática e Matemática AplicadaUniversidade Federal do Rio Grande do Norte

Page 2: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Conteúdo

�Referências�Introdução�O Modelo Computacional�Um Exemplo Simples�Elementos da API JDBC 1.0�Aspectos Avançados da API JDBC�Exemplo de Sistema Three-Tier

Page 3: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Referências

�JDBCTM - Connecting Java and Databases. Sun Microsystems, 1996

�JDBC Database Access, by MaydeneFisher (Java Tutorial, Sun Microsystems, 1999)

�JDBC Home Pagehttp://java.sun.com/products/jdbc

Page 4: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

JDBCTM: Introdução

�JDBC�Facilita a integração entre programas Java e SGBDs

Relacionais�Suporta a execução de comandos SQL através de

uma API definida em Java.⌧Call Level Interface

�Pacote java.sql, integrado ao núcleo do JDKTM

�Aplicações, Applets, Servlets ou quaisquer outros programas Java podem:�Estabelecer conexão com base de dados�Enviar comandos SQL�Processar resultados

Page 5: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

ClienteCliente

Java CORE APIsJDBC API A B C

Bases de DadosSGBD Relacional

Modelo Computacional

createStmt()

execUpdate()execQuery()

ConnStmt ResultSet

get*(“Col-n”); get*(n);next();next();

DriverMngr

Aplicação

Driver

getConn()

Servidor

Col-1 Col-2 ... Col-nnext();

Page 6: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

JDBC 1.0

Um Exemplo Simples

Page 7: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Um Exemplo Simples

import java.sql.*;public class Select {

static {try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch ( ClassNotFoundException cnfe) { System.out.print(cnfe.toString()); }

}public static void main(String[] args) {

try {Connection conn = DriverManager.getConnection(

"jdbc:odbc:Banco_de_Java", ”user", ”password");Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT numero, saldo FROM contas");System.out.println("Resultados da consulta");while (rs.next()) {

String numero = rs.getString(1);int saldo = rs.getInt(2);System.out.println(" Conta Bancária número:["+numero+"] Saldo:["+saldo+"]");

}stmt.close();conn.close();

} catch (SQLException ex) {ex.printStackTrace();

}System.exit(0);

}}

Page 8: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Principais Elementos da API JDBC Usados no Exemplo

� Carregar Driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

� Estabelecer ConnectionConnection connection = DriverManager.getConnection(

"jdbc:odbc:BancodeJava" /*JDBC URL*/ ,"jorge","jhcf");

� Criar StatementStatement statement = connection.createStatement();

� Executar QueriesResultStatement result = statement.executeQuery(

"SELECT * FROM contas WHERE numero =\'1\'”);

� Executar Updatesstatement.executeUpdate(

"UPDATE contas SET saldo = 100 WHERE numero = \'1\'");

� Fechar Statement e Connectionstatement.close(); connection.close();

Page 9: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

JDBC 1.0: pacote java.sql

�InterfacesDriverConnectionDatabaseMetaDataResultSet ResultSetMetaDataStatement

PreparedStatementCallableStatement

� Classesjava.util.Date

DateTime Timestamp

DriverManager DriverPropertyInfo Types

� ExceçõesSQLException

SQLWarningDataTruncation

Page 10: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Classes do Exemplo

�Driver�DriverManager�Connection�Statement�ResultSet�SQLException

Page 11: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Driver (interface)

�Cria uma instância e registra-se junto ao DriverManager quando a classe é carregada

�Conecta-se a um tipo de SGBD específico�Principais Métodos

�boolean acceptsURL(String) �Connection connect(String, Properties)�boolean jdbcCompliant()

Page 12: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Java, JDBC e JDBC Drivers

A B C

SGBD Relacional

JDBC DriverManager

Aplicação Java

JDBC Net Driver

ProtocoloMiddleware

JDBC

JDBC-ODBC Bridge Driver ouNative API-Partly Java Driver

ODBC & DB Drivers

ProtocoloODBC e/ouProprietário

Native ProtocolPure Java Driver

ProtocoloProprietário

JDBC Connector

Page 13: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Categorias de Drivers paraJDBC

1 - JDBC-ODBC Bridge plus ODBC driver �ALL JAVA? No; Protocolo: Direct

2 - Native API partly-Java driver�ALL JAVA? No; Protocolo: Direct

3 - JDBC-Net pure Java Driver�ALL JAVA? Yes ; Protocolo: Requer Connector

4 - Native protocol pure Java Driver�ALL JAVA? Yes; Protocolo: Direct

Page 14: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

DriverManager (classe)

� Gerencia um conjunto de drivers JDBC disponíveis. � Testa qual deles é mais apropriado para uma dada

conexão� Busca o nome dos drivers para carga na propriedade

jdbc.drivers da classe System. Ex:�jdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver:wombat.sql.Driver

� Principais Métodos�Connection getConnection(String, String, String)�registerDriver(Driver)�get(set)LoginTimeout(int)�get(set)LogStream(PrintStream)

Page 15: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Connection (interface)

� Representa uma sessão junto a uma base de dados específica

� Gerencia a execução de comandos (Statement) e o retorno de resultados (ResultSet)

� Por default, realiza um commit após a execução de cada Statement.

� Principais Métodos�Statement createStatement();�close(), commit(), rooback(), setAutoCommit(boolean b)�DatabaseMetaData getMetaData();�PreparedStatement prepareStatement(String sql);�CallableStatement prepareCall(String sql);

Page 16: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Statement

�Executa comandos estáticos SQL�A cada momento, apenas um ResultSet por

Statement�Principais Métodos

�ResultSet executeQuery(String sql)⌧SQL statement SELECT

�int executeUpdate(String sql)⌧SQL statement INSERT, UPDATE ou DELETE

�close(); cancel();�get(set)MaxRows(); get(set)MaxFieldSize();

Page 17: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

ResultSet

�Tabela de dados gerada pela execução de um comando executeQuery()

�Linhas são acessadas seqüencialmente - next();�Colunas são acessadas em qualquer ordem

�métodos getXXX(int collumnIndex|String collName)⌧* getBoolean(), _Byte(), _Int(), _Float(), _Double(), Long(),

Short(), String()⌧byte[] getBytes()⌧java.lang.BigDecimal getBigDecimal();⌧InputStream getBinaryStream()⌧getMetaData();

Page 18: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

SQLException

�Informação sobre erro no acesso à base de dados�String descrevendo o erro

⌧getMessage()�SQLState - String no Padrão XOPEN SQL

⌧getSQLState()�Código de erro específico do fabricante

⌧getErrorCode()�Link para próxima exceção, contendo informação

adicional⌧getNextException()

Page 19: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Banco de Java em JDBC

Page 20: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Banco_de_Java

Arquitetura do Sistema

1 0NUMERO SALDO

CONTAS

Oracle:1721server.dimap.ufrn.br

TCP/IP

BancoJDBC

ContaBancaria

client.x.br

Controleda Aplicacao

createConta(...);getConta(...);setConta(...);

2 -8001 50

ContaBancaria

Page 21: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

ClienteCliente (Applet/Servlet/Aplicação)

Java CORE APIsJDBC API A B C

Bases de DadosSGBD Relacional

Funcionamento do Sistema BancoJDBC

createStmt()

execUpdate()execQuery()

ConnStmt ResultSet

getInt(“saldo”);

DriverMngr

BancoJDBC

Driver

getConn()

Server

next();numero saldo ... ...

Page 22: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

O Banco de Java e JDBC

package BancoJDBC;import java.sql.*;import model.*;

public class BancoJDBC {static { ...try {}}private String urlBancoDeDados =

"jdbc:oracle:thin:@server.dimap.ufrn.br:1721:Banco_de_Java";private String nomeUsuario = "jorge";private String senhaUsuario = "jhcf";private Connection conn;private Statement stmt;

...

Page 23: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

O Banco de Java e JDBC (Continuação)

public BancoJDBC() {...}

public void closeConnection() {...}

public ContaBancaria getConta(String numeroConta) {...}private ContaBancaria getContaSQL(String numeroConta) {...}

public boolean setConta(ContaBancaria conta) {...}private void setContaSQL(ContaBancaria conta) {...}

public ContaBancaria createConta(String numeroConta) {...}private ContaBancaria createContaSQL(String numeroConta) {...}

Page 24: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

public BancoJDBC()

public BancoJDBC()throws FalhaDeComunicacaoException {

try {conn = DriverManager.getConnection(urlBancoDeDados,

nomeUsuario,senhaUsuario);

stmt = conn.createStatement();stmt.getClass();

} catch (SQLException sqle) {throw new FalhaDeComunicacaoException(sqle);

}}

Page 25: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

public void closeConnection()

public void closeConnection()throws FalhaDeComunicacaoException {

try {stmt.close();conn.close();

} catch (SQLException sqle) {throw new FalhaDeComunicacaoException(sqle);

}}

Page 26: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

public ContaBancaria getConta(String numeroConta)

public ContaBancaria getConta(String numeroConta)throws ContaNaoExistenteException,

FalhaDeComunicacaoException {ContaBancaria conta = null;try {

conta = getContaSQL(numeroConta);return conta;

} catch (SQLException sqle) {throw new FalhaDeComunicacaoException(sqle);

}}

Page 27: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

private ContaBancaria getContaSQL(String numeroConta)

private ContaBancaria getContaSQL(String numeroConta)throws SQLException, ContaNaoExistenteException {

String comando = "SELECT * FROM contas "+"WHERE numero = \'"+numeroConta+"\'";

ResultSet query = stmt.executeQuery(comando);if (query.next()) {ContaBancaria conta =

new ContaBancaria(query.getString("numero"));conta.setSaldoAnterior(query.getInt("saldo"));return conta;

} else {throw new ContaNaoExistenteException(numeroConta);

}}

Page 28: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

public boolean setConta(ContaBancaria conta)

public boolean setConta(ContaBancaria conta)throws FalhaDeComunicacaoException {

this.setContaSQL(conta);}

Page 29: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

private voidsetContaSQL(ContaBancaria conta)

private void setContaSQL(ContaBancaria conta)throws FalhaDeComunicacaoException {

try {stmt.executeUpdate("UPDATE contas SET saldo = "+

conta.getSaldoAtual()+" WHERE numero = \'"+conta.getNumero()+"\'");

} catch (SQLException sqle) {throw new FalhaDeComunicacaoException(sqle);

}}

Page 30: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

public ContaBancaria criaConta(String numeroConta)

public ContaBancaria createConta(String numeroConta)throws ContaExistenteException,

FalhaDeComunicacaoException {try {

return this.createContaSQL(numeroConta);} catch (SQLException sqle) {throw new FalhaDeComunicacaoException(sqle);

}}

Page 31: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Arquiteturas Multi-Camadascom JDBC, RMI, EJBs, Servlets, Applets e Browsers

Page 32: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Arquiteturas Two-Tier e Three-Tier com JDBC

Two-Tier (Duas Camadas)Aplicação/Applet

Java

java.sql

A B C

SGBD Relacional

MiddlewareJDBC,

ODBC ouProprietário

MiddlewareJDBC,

ODBC ouProprietário

Three-Tier (Três Camadas)Aplicação/Applet

Java, HTML Browser

java.rmi, java.net ou java.idl

Servidor de Aplicação

java.sql

BusinessObjects

Cliente

Servidor de SGBD

HTTP, RMI ou CORBA

Cliente

Page 33: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Arquiteturas Multi-Camadascom RMI

Two-TierCliente Java

Aplicação/Applet

java.rmi

A B C

SGBD Relacional

MiddlewareRMI

Three-Tier (Três Camadas)Aplicação/Applet

Java, HTML Browser

java.net

Servlets

HTTP

javax.servletObjetos

Distribuídos

java.rmi

Three-TierCliente Java

Aplicação/Applet

java.rmi

MiddlewareRMI

ObjetosDistribuídos

java.rmi

java.sql java.rmi

Page 34: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Arquiteturas Multi-Camadascom Servlets

Two-TierCliente Java

Aplicação/Applet,HTML Browser

java.net

A B C

SGBD Relacional

MiddlewareHTTP

N-Tier

Servlets

HTTP

Three-Tier

MiddlewareHTTP

javax.servlet

java.sqlServlets

java.servlet

Servlets

javax.servlet

Cliente JavaAplicação/Applet,

HTML Browserjava.net

Cliente JavaAplicação/Applet,

HTML Browserjava.net

java.net, javax.servlet

Page 35: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Arquiteturas Multi-Camadas com Enterprise Java Beans (EJBs)

Two-TierCliente Java

Aplicação/Applet,

java.rmi, javax.jndi

A B C

SGBD Relacional

MiddlewareRMI, JNDI

N-Tier

Servlets

HTTP

N-Tier

MiddlewareRMI, JNDI

javax.ejb

java.sqlEJBs

javax.ejbEJBs

javax.servlet

Cliente JavaAplicação/Applet

Cliente JavaAplicação/Applet,

HTML Browserjava.net

java.rmi, javax.jndi

java.rmi, javax.jndi

java.rmi, javax.jndi

Page 36: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Criar uma pequena aplicação na Web com HTML + Servlets + JDBC

Page 37: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Como Capturar Dados neste Formulário HTML ...

Page 38: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

E Mostrar Dados Consolidados em uma Página HTML!

Page 39: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Unindo Servlets e JDBC

JDBC-ODBC Bridge Driver ouNative API-Partly Java Driver

Local ODBC Configuration

Surveys

employee comments ...survey1

ODBC Connector

Servletrunner/HTTP Server

SurveyQuerySurvey.htmlSurveyInsertGET Survey.html

POST surveyinsert

GET surveyquery

Web BrowserHost #1 Host #2

Host #3

Page 40: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

O Futuro de JDBC

Page 41: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

O Futuro de JDBCTM

�JDBC 1.0 (JDK 1.1)�JDBC 2.0 (JDK 1.2)�JDBC Standard Extensions

�Heavy-duty DB Computing⌧SQL3 types⌧Scrollable cursors⌧programatic and batch updates⌧Fundamental p/ Enterprise JavaBeans

Page 42: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Aspectos Avançados de JDBC 2.0 - Batch UpdatesExtraído de Jguru.com

try {dbCon.setAutoCommit(false);Statement stmt= dbCon.createStatement();stmt.addBatch("INSERT INTO bugs "+ "VALUES (1007, 'Server stack overflow', 1,2,{d '1999-01-01'})");stmt.addBatch("INSERT INTO bugs "+ "VALUES (1008,'Cannot load DLL', 3,1,{d '1999-01-01'})");stmt.addBatch("INSERT INTO bugs "+ "VALUES (1009,'Applet locks up',2,2,{d '1999-01-01'})");int[] updCnt = stmt.executeBatch();dbCon.commit();

} catch (BatchUpdateException be) {//handle batch update exceptionint[] counts = be.getUpdateCounts();for (int i=0; I counts.length; i++) {

System.out.println("Statement["+i+"] :"+counts[i]);}dbCon.rollback();

} catch (SQLException e) {//handle SQL exceptiondbCon.rollback();

}

Page 43: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Outras Referências

�Servlets�Introduction to SQL Language

�http://w3.one.net/~jhoffman/sqltut.htm�Jguru FAQ

�http://www.jguru.com/jguru/faq/printablefaq.jsp?faq=JDBC

Page 44: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright © 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.

Próximos Passos

�JDBC Tutorial da Sun Microsystems�JDBC Guide�Jguru FAQ�Connection Pool�Aspectos Avançados da JDBC 2.0

Page 45: por (Tutorial) - cic.unb.brjhcf/MyBooks/itjava/slides/IntegrandoJavaEBan...Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes ... quaisquer outros programas

XV Simpósio Brasileiro de Bancos de Dados2-6 de Outubro de 2000

João Pessoa - Paraíba, Brasil

Integrando Java e Banco de Dados (Tutorial)

porJorge Henrique Cabral Fernandes

Departamento de Informática e Matemática AplicadaUniversidade Federal do Rio Grande do Norte