April 05 Prof. Ismael H. F. Santos - 1 Módulo Ib Interface com BancoDados JDBC - avançado Prof. Ismael H F Santos.

Slides:



Advertisements
Apresentações semelhantes
Criando aplicações WEB
Advertisements

JDBC Java Dababase Connectivity Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008.
Prof. Alessandro J. de Souza
Java Conexão com Banco de Dados
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique
setWrapStyleWord() configura o estilo de quebra de linha setLineWrap(true) indica mudança automática de linha A linha 68 registra o objeto resultTable.
28.5 Instruções para instalar o MySQL e o MySQL Conector/J
SQLJ: uma alternativa de alto nível a JDBC
Linguagens de Programação Orientadas a Objetos
Mapeamento Objeto Relacional
Prof. João Bosco M. Sobral
Módulo I Interface com BancoDados JDBC
Módulo III Camada de Persistência
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Contratos Modelagem Funcional.
Estrutura de Dados em Java
B ANCO DE D ADOS E JDBC Profa. Msc. Cintia Carvalho Oliveira Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF 1.
CRIANDO OBJETOS EM JAVA
Java & Bancos de Dados Universidade Salgado de Oliveira Goiânia
Java :: Persistência de Dados
Acesso a Base de Dados JDBC Trabalho Realizado por:
Concorrência em Java Threads em Java.
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.
Conceitos de SGBD Objeto-Relacional Oracle 10g [2]
Integração com Banco de Dados
Programação I Aula 2 (Métodos)
Programação Orientada a objetos II
Anexo A. JDBC  Conjunto de interfaces e classes java que faz envio de consultas para um banco de dados.  Objetos(tipos)  Conexão (Driver e Connection)
JSP / Servlets Avançado
Chamada Remota de Procedimentos
P ROGRAMAÇÃO Prof.: Bruno Rafael de Oliveira Rodrigues.
JDBC Java Database Connectivity. JDBC Especificação para uso de base de dados em aplicações e applets JAVA; API para uso de drivers JDBC; Compatível com.
The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho.
Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – Ceça.
Curso Programação – JAVA Centro de Formação São Domingos
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Configuração do Ambiente de programação
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.
Aula Prática 4 Monitoria IP/CC (~if669).
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
CURSO JAVA BÁSICO Módulo JDBC – slide 1 MóduloJDBC.
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: Iterator Professores Eduardo Bezerra –
JDBC Java Database Connectivity docs/guide/jdbc/getstart/introTOC.doc.html.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Banco de Dados Capítulo 6: Arquitetura de SGBD Controle de Concorrência UFCG/DSC Prof. Cláudio Baptista.
Feapa Prof Osiel Marlon Disciplina: Engenharia de Software 2009 Curso: Sistemas de Informação.
J AVA D ATABASE C ONNECTIVITY JDBC. JDBC O Java Database Connectivity (JDBC) API é o padrão da indústria para que aplicações Java acessem bancos de dados.
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
Java Acesso a Banco de Dados Prof. Marcos André Pisching, M.Sc.
Acesso a Banco de Dados com JDBC e DAO
Acessando banco de dados com JAVA.  Linguagem independente de plataforma; ◦ “Write once, run anywhere” ◦ JVM  Java Virtual Machine  Mecanismo que permite.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Java Módulo II Projeto Final.
JavaServer Faces – JSF Fernando Freitas Costa Bacharel em Sistemas de Informação Especialista em Gestão e Docência Universitária blog.fimes.edu.br/fernando.
Persistência de dados e padrão DAO
Banco de Dados Relacionais. Tabelas DB Relacionais são baseados em tabelas As tabelas armazenam registros Cada registro ocupa uma linha da tabela Registros.
Prof.: Jean Carlo Mendes
Persistência de dados e padrão DAO Padrões de Projeto Orientado a Objetos Profa. Danielle Martin/Mauricio Universidade de Mogi das Cruzes.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Acesso a Banco de dados com JDBC
Transcrição da apresentação:

April 05 Prof. Ismael H. F. Santos - 1 Módulo Ib Interface com BancoDados JDBC - avançado Prof. Ismael H F Santos

April 05 Prof. Ismael H. F. Santos - 2 Ementa Modulo I – JDBC-avançado Versões JDBC JDBC 2.0 Interface DataSource Interface RowSet JDBC 2.1 Movimentação do Cursor Atualizações Programáticas JDBC 3.0

April 05 Prof. Ismael H. F. Santos - 3 Versões JDBC POO-Java

April 05 Prof. Ismael H. F. Santos - 4 Versões do padrão JDBC

April 05 Prof. Ismael H. F. Santos - 5 JDBC 1.0 Além do exposto até aqui, o padrão JDBC em sua versão 1.0 define meta-dados do banco e dos resultados das consultas, através das interfaces DatabaseMetaData e ResultSetMetaData

April 05 Prof. Ismael H. F. Santos - 6 JDBC 2.0 Define a extensão padrão javax.sql que: cria o conceito de um DataSource permite o uso de pools de conexões permite o uso de transações distribuídas cria o conceito de um RowSet

April 05 Prof. Ismael H. F. Santos - 7 JDBC 2.1 Estende o padrão inicial provendo: movimentação livre do cursor no ResultSet atualizações programáticas, via ResultSet atualizações em lotes (batch updates) compatibilidade com tipos SQL3 (SQL-99) Extensões Padrão (javax.sql) Rowset Beans JNDI – Java Naming and Directory Interface JTS – Java Transaction Service

April 05 Prof. Ismael H. F. Santos - 8 JDBC 3.0 Estende o pacote e a extensão padrão provendo: conceito de savepoints em transações configuração do pool de conexões obtenção de valores de colunas de preenchimento automático manutenção de resultados abertos após a conclusão da transação e outras funcionalidades

April 05 Prof. Ismael H. F. Santos - 9 JDBC 4.0 Estende o.... :

April 05 Prof. Ismael H. F. Santos - 10 JDBC 2.0 DataSource POO-Java

April 05 Prof. Ismael H. F. Santos - 11 Interface DataSource Representa o acesso a um SGBD Assim como Driver, estabelece conexões As conexões criadas pelo DataSource podem utilizar pools e/ou participar de transações distribuídas

April 05 Prof. Ismael H. F. Santos - 12 Métodos de DataSource public static synchronized Connection getConnection() throws SQLException public static synchronized Connection getConnection( String user, String password) throws SQLException public static void setLoginTimeout(int seconds) public static void setLogWriter(PrintWriter out)

April 05 Prof. Ismael H. F. Santos - 13 Obtendo um DataSource Um DataSource é obtido através do serviço de nomes e diretórios JNDI Uma instância do DataSource precisa ser criada, configurada e registrada no serviço de nomes por um administrador

April 05 Prof. Ismael H. F. Santos - 14 Características das Conexões De acordo com o tipo de DataSource, as conexões por ele criadas poderão ser, ou não: pertencentes a um pool ser utilizadas em transações distribuídas

April 05 Prof. Ismael H. F. Santos - 15 JDBC 2.0 RowSet POO-Java

April 05 Prof. Ismael H. F. Santos - 16 Interface RowSet É um sub-tipo ResultSet, seguindo o modelo Java Beans Pode ser categorizado da seguinte forma: connected rowset disconnected rowset Um RowSet não conectado não precisa de um Driver associado

April 05 Prof. Ismael H. F. Santos - 17 Exemplos de RowSet CachedRowSet – um disconnected rowset que armazena seus dados em memória JDBCRowSet – um connected rowset que possibilita lidar com uma conexão como um Java Bean WebRowSet – um connected rowset que, internamente, utiliza o protocolo HTTP para se conectar a um servlet que provê os dados

April 05 Prof. Ismael H. F. Santos - 18 JDBC 2.1 Cursor POO-Java

April 05 Prof. Ismael H. F. Santos - 19 Movimentação de cursor A criação de um ResultSet cujo cursor possa ser livremente movimentado deve ser feita de forma explícita, através da conexão A interface Connection possui sobrecargas dos métodos createStatement, prepareStatement e prepareCall para especificar as características dos ResultSets correspondentes

April 05 Prof. Ismael H. F. Santos - 20 Métodos de Connection public Statement createStatement( int resultSetType, int resultSetConcurrency) throws SQLException public PreparedStatement prepareStatement( String sql, int resultSetType, int resultSetConcurrency) throws SQLException public CallableStatement prepareCall( String sql, int resultSetType, int resultSetConcurrency) throws SQLException

April 05 Prof. Ismael H. F. Santos - 21 Parâmetros possíveis Para o tipo (resultSetType): TYPE_FORWARD_ONLY (default) TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE E concorrência (resultSetConcurrency): CONCUR_READ_ONLY (default) CONCUR_UPDATABLE

April 05 Prof. Ismael H. F. Santos - 22 Criando um ResultSet com cursor de livre movimentação Statement stat = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = stat.executeQuery( "SELECT * FROM Produtos");

April 05 Prof. Ismael H. F. Santos - 23 Funcionou? O ResultSet criado pode não possuir as características especificadas caso o driver não dê suporte a essa funcionalidade Existem métodos na própria classe ResultSet para verificar: public int getType() throws SQLException public int getConcurrency() throws SQLException

April 05 Prof. Ismael H. F. Santos - 24 Movimentação do cursor A movimentação do cursor pode ser feita da forma normal, através de next, ou através de outros métodos de ResultSet Esses métodos permitem mover o cursor para frente, para trás, para os extremos ou para uma posição arbitrária

April 05 Prof. Ismael H. F. Santos - 25 Métodos de ResultSet public boolean first() throws SQLException public boolean last() throws SQLException public boolean beforeFirst() throws SQLException public boolean afterLast() throws SQLException public boolean next() throws SQLException public boolean previous() throws SQLException public boolean relative(int rows) throws SQLException public boolean absolute(int row) throws SQLException

April 05 Prof. Ismael H. F. Santos - 26 Métodos de ResultSet (2) public boolean isFirst() throws SQLException public boolean isLast() throws SQLException public boolean isBeforeFirst() throws SQLException public boolean isAfterLast() throws SQLException public int getRow() throws SQLException

April 05 Prof. Ismael H. F. Santos - 27 Exemplos de movimentação int pos = rs.getRow(); // Pega linha corrente rs.last(); // Vai para a última rs.absolute(10); // Vai para a décima rs.absolute(-1); // Vai para a última rs.absolute(-5); // Vai para antes da primeira Rs.absolute(pos); // Vai para a linha rs.relative(3); // Avança três linhas rs.relative(-2); // Volta duas

April 05 Prof. Ismael H. F. Santos - 28 Dicas de otimização Podemos dar “dicas” ao ResultSet para melhorar o desempenho: public void setFetchSize(int rows) throws SQLException public void setFetchDirection(int direction) throws SQLException public int getFetchSize() throws SQLException public int getFetchDirection() throws SQLException

April 05 Prof. Ismael H. F. Santos - 29 JDBC 2.1 Atualizações Programáticas POO-Java

April 05 Prof. Ismael H. F. Santos - 30 Atualizações programáticas Através do parâmetro que indica o nível de concorrência do ResultSet, presente nos métodos createStatement e outros, podemos criar ResultSets onde é possível modificar programaticamente o resultado obtido (CONCUR_UPDATABLE) As operações podem ser feitas por meio de métodos específicos de ResultSet

April 05 Prof. Ismael H. F. Santos - 31 Métodos de ResultSet public void insertRow() throws SQLException public void updateRow() throws SQLException public void deleteRow() throws SQLException public void updateInt(int columnIndex, int x) throws SQLException public void updateString(int columnIndex, String x) throws SQLException... public void moveToInsertRow() throws SQLException public void cancelRowUpdates() throws SQLException

April 05 Prof. Ismael H. F. Santos - 32 Exemplo de atualização rs.updateString("nome", "João"); rs.updateRow(); rs.moveToInsertRow(); rs.updateString("nome", "João"); rs.updateString("senha", "João"); rs.insertRow(); rs.last(); rs.removeRow(); rs.updateString("nome", "João"); rs.cancelRowUpdates();

April 05 Prof. Ismael H. F. Santos - 33 Mais métodos de ResultSet public void refreshRow() throws SQLException public boolean rowUpdated() throws SQLException public boolean rowInserted() throws SQLException public boolean rowDeleted() throws SQLException public void moveToCurrentRow() throws SQLException

April 05 Prof. Ismael H. F. Santos - 34 Visibilidade de atualizações Atualizações realizadas na base podem ser vistas ou não por ResultSets que já estejam abertos, dependendo de dois fatores: nível de isolamento entre transações tipo do ResultSet Esse comportamento, entretanto, depende de como o SGBD é implementado

April 05 Prof. Ismael H. F. Santos - 35 Atualização em lotes É possível enviar um conjunto de comandos SQL de atualização do banco de dados como um único conjunto Essa funcionalidade permite uma execução com melhor desempenho, em certas circunstâncias Basicamente, os comandos devem ser passados ao Statement e então executados

April 05 Prof. Ismael H. F. Santos - 36 Métodos de Statement public void addBatch(String sql) throws SQLException public int[] executeBatch() throws SQLException public void clearBatch() throws SQLException

April 05 Prof. Ismael H. F. Santos - 37 Exemplo de atualização try { con.setAutoCommit(false); Statement stat = con.createStatement(); stat.addBatch("INSERT INTO xy VALUES ('0','0')"); stat.addBatch("INSERT INTO xy VALUES ('1','1')"); stat.addBatch("INSERT INTO xy VALUES ('2','2')"); int[] counts = stat.executeBatch(); con.commit(); } catch (BatchUpdateException ex) { int[] counts = ex.getUpdateCounts();... } con.setAutoCommit(true);

April 05 Prof. Ismael H. F. Santos - 38 Update counts O vetor de update counts retornado pelos métodos executeBatch e getUpdateCount podem ter como conteúdo: um número maior igual a zero Statement.SUCCESS_NO_INFO Statement.EXECUTE_FAILED

April 05 Prof. Ismael H. F. Santos - 39 PreparedStatement & CallableStatement Dispõem do método addBatch() para permitir seu uso em atualizações em lotes Dessa forma, podemos dar valores aos parâmetros e chamar addBatch, repetindo esse processo tantas vezes quanto necessário

April 05 Prof. Ismael H. F. Santos - 40 JDBC 3.0 POO-Java