Acesso a Bancos de Dados (JDBC) Desenvolvimento de Aplicações em Java O QUE É JDBC JAVA E JDBC CARACTERÍSTICAS DE JDBC



Documentos relacionados
Programação com Acesso a BD. Programação com OO Acesso em Java

Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu.

Programação com Acesso a Banco de Dados

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. JDBC - Java Database Connectivity A,L,F,M

Acesso a Bancos de Dados em Java (JDBC)

Java 2 Standard Edition Fundamentos de

Aula 1 Acesso a Banco de Dados

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

JDBC Acessando Banco de Dados

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Integrando Java com Banco de Dados

Capítulo 1. Acesso a Banco de Dados com JDBC (Java Database Connectivity) e o Padrão de Projeto DAO (Data Access Object)

Programação Orientada a Objetos JDBC Java Database Connectivity

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

Java e Conexão com Banco de Dados

Conectividade de Banco de Dados Java JDBC

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

(UFF) JDBC (I) TEPIS II

Acessando dados em Java com JDBC

Java Básico JDBC. Razer Anthom Nizer Rojas Montaño Banco de Dados: JDBC

Programação Orientada a Objetos (DPADF 0063)

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

JAVA JDBC COMO FUNCIONA. Programação Orientada a Objetos Flávio de Oliveira Silva 315. Programação Orientada a Objetos Flávio de Oliveira Silva 316

Acessando bancos de dados com o JDBC

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais

JAVA JDBC Java Database Connectivity

JDBC. Java DataBase Connectivity

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

JDBC. Prof. Márcio Bueno

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

JDBC Java Database Connectivity

Persistência de Classes em Tabelas de Banco de Dados

Aula 4 JDBC - Java Database Connectivity

Curso de Java Módulo III JDBC Fábio Mengue Centro de Computação - Unicamp

Banco de Dados. Prof. Leonardo Barreto Campos 1

JPA: Persistência padronizada em Java

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

Desenvolvimento Web TCC Turma A-1

JDBC (Fundamentos) Sang Shin Java Technology Architect Sun Microsystems, Inc.

Programação SQL. Introdução

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Figura 1. A Classe Java

Linguagens de Programação

JAVA 14 ODBC / JDBC Aceder a Bases de Dados através da Internet. Vitor Vaz da Silva

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Manipulação de Banco de Dados com Java 1. Objetivos

Noções de. Microsoft SQL Server. Microsoft SQL Server

Prof. Marcelo Heitor Teixeira marceloheitor.com. Java API JDBC


Introdução a Banco de Dados Aula 03. Prof. Silvestri

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

INTRODUÇÃO BANCO DE DADOS. Prof. Msc. Hélio Esperidião

Orientação a Objetos

MYSQL: TIPOS DE DADOS. Gilvan Vieira Moura

Java na WEB Banco de Dados

Execução de Instruções SQL

Arquitetura de BDs Distribuídos. Victor Amorim - vhca Pedro Melo pam2

Programação com ODBC 3

Programação em Rede JDBC

Especialização em Engenharia e Administração de Banco de Dados SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS I

Introdução ao SQL. O que é SQL?

Leonardo Gresta Paulino Murta

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

BANCO DE DADOS II. AULA MySQL.

JDBC - Java Data Base Connectivity

Aula 2 Exibindo Resultados de Consultas

Java na Web. Aplicações Web

Android e Bancos de Dados

Desenvolvendo Aplicações Web com NetBeans

Introdução ao PHP. Prof. Késsia Marchi

Projetar Arquitetura

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

GBC043 Sistemas de Banco de Dados. Introdução. Ilmério Reis da Silva UFU/FACOM

LINGUAGEM DE BANCO DE DADOS

Arquitetura de Banco de Dados

Conectividade. Conectividade. Conectividade. Conectividade. Conectividade. Conectividade. Fernando Fonseca & Ana Carolina

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Minicurso3 Introdução ao Banco de Dados MySQL

No cabeçalho de cada arquivo Java onde haverá acesso a banco de dados, o seguinte Import deve ser colocado:

Conectividade. Gerenciamento de Dados e Informação. Conectividade. Conectividade. Uso de Protocolo comum de acesso a dados.

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

Java JDBC - I. Ex. 2: para o SQLServer da Microsoft, o driver JDBC pode ser obtido em

SISTEMA GERENCIADOR DE BANCO DE DADOS

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Conectividade. Gerenciamento de Dados e Informação. Conectividade. Conectividade. Uso de Protocolo comum de acesso a dados. Uso de SGBD.

Padrões de Projeto e Persistência com DAO

Transcrição:

Desenvolvimento de Aplicações em Java José Maria Monteiro www.lia.ufc.br/~zemaria monteiro@unifor.br zemaria@lia.ufc.br O QUE É JDBC Conjunto de classes e interfaces (API) escritas em Java que faz o envio de cláusulas sql para qualquer banco de dados relacional; Api de baixo nível e base para api s de alto nível; Amplia o que você pode fazer com Java; Possibilita o uso de BD s já instalados; JAVA E JDBC Java : não é mais necessário escrever um programa para cada plataforma; Jdbc : não é mais necessário escrever um programa para cada tipo de bando de dados; Escreva uma vez e execute em qualquer lugar; O futuro tem muitos nomes. Para os fracos é o inatingível. Para os temerosos, o desconhecido. Para os valentes é a oportunidade: Victor Hugo. Tempo de desenvolvimento reduzido; Instalação e manutenção simplificadas; Dissiminação da informação de maneira fácil e econômica; CARACTERÍSTICAS DE JDBC Java e JDBC proporcionam aos programadores de bancos de dados as seguintes características : Acesso a Bancos de Dados (JDBC) Fácil mapeamento objeto para relacional. Independência de banco de dados. Computação distribuída. 1

O QUE JDBC FAZ? ARQUITETURAS JDBC De maneira simplificada JDBC faz seis coisas : 1 Estabelece conexão com o banco de dados. 2 Executa consultas. 3 Recebe o conjunto de resultados das consultas. 4 Executa stored procedures. 5 Obtém informações sobre o banco de dados, tabelas, índices, visões, e stored procedures. 6 Executa transações. Modelo em duas camadas; Modelo em três camadas; JDBC X ODBC ARQUITETURAS JDBC ODBC: Atualmente o ODBC (Open Database Conectivity) da Microsoft é a interface mais usada para acessar bancos de dados relacionais; Possibilita conectar quase todos os bancos de dados em quase todas as plataformas ; Por que não usar odbc a partir de java? 1 - MODELO EM DUAS CAMADAS Disco Local e Outras Fontes Java e JDBC Máquina Cliente Acesso ao Banco LAN ou Intranet Servidor de BD JDBC X ODBC ODBC usa uma interface em C; Chamadas de Java para códigos em C trazem desvantagens em: segurança, robustez e portabilidade; O ODBC deve ser instalado em todas as máquinas clientes; Exceções: MDAC da Microsoft ARQUITETURAS JDBC Observações No modelo em Duas Camadas, um applet ou uma aplicação Java conversa diretamente com o SGBD. Neste modelo, cláusulas SQL são enviadas do usuário para o banco, e os resultados são devolvidos para o usuário. O banco pode ser local ou remoto, neste último caso o usuário é conectado à base via rede, que pode ser uma Intranet ou Internet. Vantagens: Performance e Gerenciamento da Aplicação. 1.3-Desvantagens: Segurança, Aplicação Pesada (Fat). 2

ARQUITETURAS JDBC TIPOS DE DRIVERS JDBC 2 - MODELO EM TRÊS CAMADAS 1 Ponte JDBC- ODBC Lógica de Negócios Convertem chamadas JDBC em chamadas ODBC e as envia ao driver ODBC; BD 1 Possibilitam o uso indireto de drivers ODBC; Application GUI code RPC ou CORBA Distribuição Adicional das Lógicas de Negócios BD 2 Necessidade de configurar o ODBC; Mais apropriado para uma rede corporativa ou para aplicações usando arquitetura em três camadas; Ex: sun jdbc-odbc bridge. ARQUITETURAS JDBC Observações No modelo em Três Camadas os comandos são enviados do usuário para uma camada intermediária de serviços, a qual então manda cláusulas SQL para o banco. O banco processa as cláusulas SQL e manda os resultados para a camada intermediária, a qual então manda os resultados para o usuário. Vantagens Utilização em bancos de dados sem servidor (Dbase, Paradox, Access etc); Possibilidade de uma camada de segurança; Aplicação leve (Thin). Desvantagens Performance e Gerenciamento. TIPOS DE DRIVERS JDBC 2 Acesso Nativo Convertem chamadas JDBC em chamadas nativas do banco e comunicam-se diretamente com o SGBD; Apresentam ganhos de performance; Mais apropriado para uma rede corporativa; Ex: IBM DB2, BEA WebLogic(SQL Server, Oracle e Sybase), InfoZoom(SQL Server e Access), etc. TIPOS DE DRIVERS JDBC TIPOS DE DRIVERS JDBC Ponte JDBC- ODBC Acesso Nativo Acesso por Middleware Acesso Direto ao Servidor 3 - Acesso por Middleware Convertem chamadas JDBC em um protocolo de rede independente do SGBD e comunicam-se com um gateway que traduz estas requisições para o protocolo específico do SGBD; Possibilitam o uso de diferentes SGBD s; Esta é a mais flexível alternativa de JDBC; Suportam o acesso pela internet; Precisam de cuidados adicionais com a segurança; Ex: DataDirect (SQL Server), CONNX (DB2, SQL Server, Access, Oracle, Sysbase, Informix), etc. 3

TIPOS DE DRIVERS JDBC CLASSES DE DRIVERS JDBC 4 Acesso Direto ao Servidor Convertem chamadas JDBC para um protocolo de rede usado diretamente pelo SGBD; Suportam o acesso pela Internet; São geralmente específicos para determinada base de dados; Ex: Atinav (SQL Server), BEA WebLogic(SQL Server e Informix), DataDirect(Oracle e SQL Server), etc. DIRETOS ODBC-BRIDGE Lista Completa: http://servlet.java.sun.com/products/jdbc/drivers ARQUITETURA JDBC DRIVER MANAGER A classe DriverManager é uma camada de gerenciamento do JDBC; DriverTipo 1 DriverTipo 2 Responsável pela interface entre os usuários e os drivers; ARQUITETURA JDBC JDBC INTERFACES DriverTipo 4 DriverTipo 3 Interface Descrição Connection Representa a conexão com o banco especificado. Dentro do contexo da conexão, cláusulas SQL são executadas e os resultados são devolvidos. DatabaseMetaData Usado para obter informações sobre as bases, tabelas, índices, tipos de campos, etc. Statement Usado para executar cláusulas SQL estáticas e obter os resultados produzidos por elas. PreparedStatement Usado para executar cláusulas SQL que se repetem várias vezes de maneira eficiente e executar consultas parametrizadas. Instâncias de PreparedStatement contêm cláusulas SQL já compiladas. CallableStatement Usado para executar SQL stored procedures. ResultSet Usado para acessar os dados retornados pelas cláusulas SQL executadas. ResultSetMetaData Usado para obter informações sobre o conjunto dos resultados de uma cláusula SQL. 4

TRANSAÇÕES EM JDBC MAPEAMENTO ENTRE TIPOS SQL E TIPOS JAVA JDBC provê um modelo de controle de transações; Cada nova conexão é iniciada no modo autocommit; JDBC implicitamente emite um commit após cada Statement executado; Podemos desabilitar o autocommit; Após um commit ou um rollback, automaticamente é iniciada uma nova transação; Ex: con.setautocommit(false); con.commit(); SQL type CHAR VARCHAR LONGVARCHAR NUMERIC DECIMAL BIT TINYINT SMALLINT INTEGER Java type String String String java.lang.bignum java.lang.bignum boolean byte short int STORED PROCEDURES COM JDBC MAPEAMENTO ENTRE TIPOS SQL E TIPOS JAVA Permite usar as particularidades do SGBD; Diminui a portabilidade através dos SGBD s; Portabilidade - SQL 92; SQL type BIGINT REAL FLOAT DOUBLE BINARY VARBINARY LONGVARBINARY DATE TIME TIMESTAMP Java type long float double double byte[] byte[] byte[] java.sql.date java.sql.time java.sql.timestamp CENÁRIO DE UMA APLICAÇÃO JDBC 6 repeat Client DriverManager 1 Connection getconnection 2 3 4 5 7 8 createstatement close executquery close next get Statement ResultSet MAPEAMENTO ENTRE TIPOS SQL E TIPOS JAVA Java type String java.lang.bignum boolean byte short int long float double byte[] java.sql.date SQL type VARCHAR OU LONGVARCHAR NUMERIC BIT TINYINT SMALLINT INTEGER BIGINT REAL DOUBLE VARBINARY OU LONGVARBINARY DATE 5

PASSO 1: IMPORTAÇÃO DOS PACOTES NECESSÁRIOS ACESSANDO BD S EM DUAS CAMADAS import java.sql.*; PASSO 2: REGISTRO DO(S) DRIVER(S) NESTE EXEMPLO UTILIZAREMOS O DRIVER JDBC-ODBC BRIDGE DA SUN EM UMA ARQUITETURA DE DUAS CAMADAS. Class.forName( sun.jdbc.odbc.jdbcodbcdriver"); PASSO 1: IMPORTAÇÃO DOS PACOTES NECESSÁRIOS PASSO 2: REGISTRO DO(S) DRIVER(S) PASSO 3: ABERTURA DA CONEXÃO PASSO 4: EXECUÇÃO DE CONSULTAS E RECUPERAÇÃO DOS RESULTADOS PASSO 3: ABERTURA DA CONEXÃO String url = "jdbc:odbc:my-dsn"; Connection con = DriverManager.getConnection(url,"usuario","senha"); PASSO 5: FECHAMENTO DA CONEXÃO 6

PreparedStatement PASSO 4: EXECUÇÃO DE CONSULTAS E RECUPERAÇÃO DOS RESULTADOS Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select a, b, c, d from Table1"); while (rs.next()){ Int a = rs.getint(1); BigDecimal b = rs.getbigdecimal(2,0); char c[] = rs.getstring(3).tochararray(); boolean d = rs.getboolean(4); } OBS: O cursor de um ResultSet é inicialmente posicionado antes da primeira linha da tabela. String sql = INSERT INTO Conta VALUES(?,?,?) ; PreparedStatement cstmt = con.preparedstatement(sql); cstmt.setstring(1, 123 ); cstmt.setdouble(2, 0); cstmt.setstring(3, C ); cstmt.executeupdate(); PASSO 5: FECHAMENTO DA CONEXÃO stmt.close(); con.close(); Stored Procedures Stored Procedures (Proc. Armazenados) Procedimentos desenvolvidos em linguagem proprietária do SGBD (PL-SQL, Transact-SQL, etc) Podem ser chamados através de objetos CallableStatement Parâmetros são passados da mesma forma que em instruções PreparedStatement Sintaxe con.preparecall( {call proc_update} ); con.preparecall( {call proc_update(?)} ); con.preparecall( {? = call proc_update(?)} ); PreparedStatement Statement pré- compilado Apresenta ganhos de eficiência quando várias consultas similares são enviadas com parâmetros diferentes Uma String com a instrução SQL é preparada previamente, deixando- se? no lugar dos parâmetros Parâmetros são inseridos em ordem, com setxxx() onde XXX é um tipo igual aos retornados pelos métodos de ResultSet Stored Procedures String command = "{call INS_CLIENTES(?,?)}"; CallableStatement cstmt = con.preparecall (command); cstmt.setint(1, cliente_id); cstmt.setstring(2, nome_cliente.trim()); cstmt.execute(); 7

Stored Procedures String command = "{? = call INS_CLIENTES(?,?)}"; CallableStatement cstmt = con.preparecall (command); cstmt.setint(1, cliente_id); cstmt.setstring(2, nome_cliente.trim()); ResultSet rs = cstmt.executequery(); Metadados Connection con; DatabaseMetaData dbdata = con.getmetadata(); String dbname = dbdata.getdatabaseproductname(); ResultSet rs; ResultSetMetaData meta = rs.getmetadata(); int col = meta.getcolumncount(); String [] nomecols = new String[col]; for (int i=0; i<col; i++) nomecols[i] = meta.getcolumnname(i); Stored Procedures MEDIDAS DE SEGURANÇA String command = "{call INS_CLIENTES(?,?,?)}"; CallableStatement cstmt = con.preparecall (command); cstmt.registeroutparameter(3, 3); cstmt.setint(1, cliente_id); cstmt.setstring(2, nome_cliente.trim()); cstmt.execute(); System.out.println("Retorno: " + cstmt.getint(3)); Não é seguro transmitir o login e a senha do usuário através da Internet; Solução: usar procedimentos armazenados e tirar o direito de modificar diretamente os dados; Metadados Classe DatabaseMetaData Permite obter informações relacionadas ao banco de dados Classe ResultSetMetaData Permite obter informações sobre o ResultSet, como por exemplo quantas colunas e linhas existem na tabela de resultados, o nome das colunas, etc. JDBC 2.0 Supera diversas limitações da versão 1.0: navegação bidirecional posicionamento absoluto atualizações/inserções/remoções via cursor row sets (cursores desconectados) connection pooling (reutilização de conexões) Características são opcionais Muitos drivers ainda não implementam estas novas características 8

JDBC COMO INFRA-ESTRUTURA Data Access Object - DAO JDBC proposta como a infra- estrutura de baixo nível para integração de Java com BDs Soluções de alto nível (sobre JDBC): SQLJ (Oracle, IBM, Sun) - integração Java/SQL (Embedded SQL, SQL Types e SQL Routines) Java Data Objects (Sun) - persistência transparente (possivelmente através de mapeamento objeto-relacional) soluções proprietárias (ex.: componentes JBuilder) EXERCÍCIOS Data Access Object - DAO Altere as definições de banco vistas na aula para que poupanças e contas especiais possam ser armazenadas no banco de dados. Data Access Object - DAO Data Access Object - DAO 9