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.

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

I/O Carlos Bazilio Depto de Ciência e Tecnologia
JDBC Java Dababase Connectivity Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008.
JDBC aplicado no projeto PAIPUC Integrantes: Eduardo M. Nsimba - 4º Ano Gian Paolo Peduto - 2º Ano Heloísa H. S. Santos - 2º Ano Orientador: Prof. Dr.
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
Projeto de Sistemas de Software
Linguagens de Programação Orientadas a Objetos
Generalização, Especialização e Conceitos
Módulo I Interface com BancoDados JDBC
1 Introdução aos padrões de projeto (GoF) Conceitos preliminares –Mecanismos de herança –Princípio de Substituição de Liskov –Acoplamento concreto x Acoplamento.
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.
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.
Java & Bancos de Dados Universidade Salgado de Oliveira Goiânia
Java :: Persistência de Dados
Acesso a Base de Dados JDBC Trabalho Realizado por:
JAVA Linguagem Ambiente de Desenvolvimento
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Web Services Uninorte Semana de Tecnologia da Informação
Integração com Banco de Dados
Design Patterns / Acesso ao banco de dados (java.sql)
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.
Desnvolvimento de Projetos e Aplicações Web Ceça Moraes – Ceça.
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
Curso Programação – JAVA Centro de Formação São Domingos
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Configuração do Ambiente de programação
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.
Implementação MVC Pedro Antonino.
Design Pattern (Padrões de Projeto)
Curso de Linguagem Java
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Introdução Padrões de Projeto
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Aplicativos Web Orientação a Objetos
CURSO JAVA BÁSICO Módulo JDBC – slide 1 MóduloJDBC.
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
JDBC Java Database Connectivity docs/guide/jdbc/getstart/introTOC.doc.html.
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
1 - Introdução a Padrões de Projeto
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.
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
Acesso a Banco de Dados com JDBC e DAO
Desenvolvimento WEB II Aula 3 – Conexão com o Banco de Dados
Acessando banco de dados com JAVA.  Linguagem independente de plataforma; ◦ “Write once, run anywhere” ◦ JVM  Java Virtual Machine  Mecanismo que permite.
PSW1 Prof. Rafael. Persistência Atividade que permite que o estado de um objeto exista mesmo após a extinção do processo computacional que o criou. Em.
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Java Módulo II Projeto Final.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
ALUNO: RONI FABIO BANASZEWSKI Model-View-Controller.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Programação Orienta a Objetos (SI) Análise e Projetos de Sistemas (LCC) 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão.
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.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
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.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Acesso a Banco de dados com JDBC
Transcrição da apresentação:

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

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

JDBC ● Java Database Connectivity; ● Padrão de acesso a BD’s 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. ● " e-summary.html"

JDBC – Tipos de drivers ● Classe 1: Ponte ODBC-JDBC: Aplicações para Windows com o BD registrado;

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.

JDBC – Tipos de drivers ● Classe 2: Acesso nativo: Usa as bibliotecas client do SGBD; Aplicação JDBC Driver Manager API Nativa do Banco Banco de Dados

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.

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 JDBC Driver Manager Banco de Dados Middleware ou Servidor Rede

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.

JDBC – Tipos de drivers ● Classe 4: Acesso direto ao servidor utilizando- se o protocolo do próprio SGBD; Aplicação JDBC Driver Manager Banco de Dados Rede

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.

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: -summary.html

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

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  jdbc:postgresql://localhost: 5432/cursodb  jdbc:mysql://localhost:3306/cursodb ● login: usuário com direitos de acesso ao banco de dados; ● senha: senha para autenticação. ● Sintaxe geral de urls: “jdbc: :// : / ”

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

JDBC – Passos Básicos ● Exemplo de estrutura básica de uma aplicação

import java.sql.*; public class AcessoBDSimples { public static void main(String[] args) { try { Class.forName("org.postgresql.Driver"); Connection con = (Connection) DriverManager.getConnection ("jdbc:postgresql://localhost:5432/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.println("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!"); } import java.sql.*; public class AcessoBDSimples { public static void main(String[] args) { try { Class.forName("org.postgresql.Driver"); Connection con = (Connection) DriverManager.getConnection ("jdbc:postgresql://localhost:5432/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.println("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!"); }

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()

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.

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.

Padrões de Projeto (GoF – Gang of Four)

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”

Padrões de Projeto – Exemplo: Façade (Facade, Fachada)

Exemplo de Uso do Façade

import java.util.*; /** "Façade" */ class UserfriendlyDate { GregorianCalendar gcal; public UserfriendlyDate(String dataGreg) { String[] a = dataGreg.split("-"); gcal = new GregorianCalendar(Integer.valueOf(a[0]).intValue(), Integer.valueOf(a[1]).intValue()-1, Integer.valueOf(a[2]).intValue()); } public void addDays(int days) { gcal.add(Calendar.DAY_OF_MONTH, days); } public String toString() { return new Formatter().format("%1$tY-%1$tm-%1$td", gcal).toString();} } /** "Client" */ class FacadePattern { public static void main(String[] args) { UserfriendlyDate d = new UserfriendlyDate(" "); System.out.println("Date: "+d); d.addDays(20); System.out.println("20 days after: "+d); }

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

Padrões de Projeto Livro 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

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 ● d/index.htm ● Destes, podemos destacar o DAO (Data Access Object)

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)

Padrões de Projeto - DAO

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