PRDS /01/2013. Ricardo A. Venieris Rodnei Couto

Documentos relacionados
Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

Módulo II Mapeamento OO x Relacional

Programação Orientada a Objetos II

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

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

PERSISTÊNCIA EM JAVA. Introdução. Conexão a banco de dados através do driver JDBC UNIDADEE

CONEXÃO JAVA - BANCO DE DADOS

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

Persistência de Objetos

Banco de Dados. Banco de Dados

Programação com Acesso a Banco de Dados

JDBC JDBC. JDBC - Arquitetura. JDBC Arquitetura Pacote Java.sql. Java Database Connectivity JDBC PostgreSQL

Acesso a Bancos de Dados em Java (JDBC)

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 9- Introdução ao JDBC

INE 5612 Professor: Frank Siqueira. Leonardo Silva Jean Ercilio Thiago

MAPEAMENTO OBJETO RELACIONAL. Professora Lucélia Oliveira

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

TECNOLOGIAS DE ACESSO A BASES DE DADOS. Profª Ana Paula Cação Maio de 2018

JDBC. Java DataBase Connectivity

Java DataBase Connectivity - JDBC. Ramon Lopes Embaixador de Campus Sun - UFBA

API JDBC. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Acessando dados em Java com JDBC

Exercícios de fixação: Listas

BD II (SI 587) Programação SQL. Prof. Josenildo Silva.

Projeto Final Curso de Java Básico

Aula 1 Acesso a Banco de Dados

Como criar um banco de dados usando o mysql

JDBC. Prof. Márcio Bueno

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC

Java JDBC Aplicação Java com Acesso a um SGBD. Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010

Integrando Java com Banco de Dados

Programação Orientada a Objetos JDBC Java Database Connectivity

SISTEMA DE INFORMAÇÃO Modelo Conceitual. Prof. Luiz Fernando Laguardia Campos FMS

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

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Departamento de Computação Curso de Análise e Desenvolvimento de Sistemas Modelagem Conceitual de Dados

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

JPA: Persistência padronizada em Java

Java e Conexão com Banco de Dados

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL

Aula Prática JBCD - Introdução

JDBC - Java Data Base Connectivity

UFG - Instituto de Informática

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 Acessando Banco de Dados

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

1.2- Ambientes de Middleware

MAPEAMENTO OBJETO RELACIONAL

Módulo III Camada de Persistência

Acadêmico: Samuel Y. Deschamps Orientador: Prof. Jacques R. Heckmann

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Persistência BD / drivers

Padrões de Projeto e Persistência com DAO

Banco de Dados. Aula 2 - Prof. Bruno Moreno 19/08/2011

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

Aula 01 Revisão Geral Banco de Dados I Conceito de Banco de Dados e SGBD

Oracle Objeto-Relacional. Pablo Vieira Florentino

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.

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

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Curso: Banco de Dados I. Conceitos Iniciais

Mapeamento Lógico/Relacional com JPA

Introdução. O que é um Banco de Dados (BD)?

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

A linguagem SQL

UNIVERSIDADE FEDERAL DO PIAUÍ DEPARTAMENTO DE COMPUTÇÃO DISCIPLINA: ENGENHARIA DE SOFTWARE II PROFESSOR: ARMANDO SOARES

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

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Hibernate Anotations

Leonardo Gresta Paulino Murta

Introdução a Sistemas Gerenciadores de Banco de Dados

Java - Conexão ao Banco de Dados usando JDBC


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

Web Services. EclipseSDK/DB2 Construindo/Consumindo Serviços

BANCO DE DADOS ORIENTADO A OBJETOS

SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS - SGBD

JDBC DRIVER. Objetivo: Possibilitar aplicações não Zim de se conectar a um banco de dados Zim utilizando as normas JDBC.

Desenvolvimento de Aplicaçõ. ções em Java

JPA Com Hibernate. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Aula 01 Conceito de Banco de Dados e SGBD

DATA ACCESS OBJECT (DAO)

Mapeamento Objeto-Relacional

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

Revisão e Exercícios. Relacionamento. Projeto de Bancos de Dados. Chave e Domínio. Tipos de Atributos

Arquitetura dos SBDs Características e Benefícios Visão Geral de Projeto de BD MER: Entidades e Atributos Atividade.

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

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

Curso: Desenvolvimento Java

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira

LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS

Classes de Projeto. Prof. Anderson Cavalcanti UFRN-CT-DCA

Modelo Entidade-Relacionamento (E-R)

A linguagem SQL

Unidade 12: Programação de Banco de Dados com Java Prof. Daniel Caetano

Driver JDBC Para Consultas em Bancos de Dados Distribuídos e Fragmentados Horizontalmente

BCD29008 Banco de dados

Transcrição:

PRDS 2013 24/01/2013 Ricardo A. Venieris Rodnei Couto

Review Hello World Tecnologia Java Variáveis, Operadores Expressões, Comandos e Blocos Controle de Fluxo: Decisão Classes e Interfaces Try, catch, finally, Unchecked Exceptions API e Coleções - Framework Alguém tem dívidas?

Review: Plataforma Java - Características Ferramentas de Desenvolvimento para Compilação Execução Monitoração Depuração Documentação Application Program Interface (API) Classes úteis Prontas para o uso Tecnologias de Deployment Java WebStart Java Plug-In Toolkits de Interface com Usuário Swing Java 2D Bibliotecas de Integração Acesso a Banco de Dados Manipulação de Objetos Remotos

Exercício: Sintaxe e IDE Eclipse Escreva um programa que Entrada: ano no formato yyyy (ex: 1998, 2006,...) Saída: calendário do ano no formato: Exemplo: Dia da Semana, dia/mês/ano. Imprimir na Tela Entrada: 2006 Saída: Dom, 01/01/2006 Seg, 02/01/2006 Ter, 03/01/2006... Sab, 30/12/2006 Dom, 31/12/2006 Dica: use a documentação da JAVA API

Resposta

Exercício: Escreva um programa que implemente o modelo de classes discutido na última aula criando: Todas as classes e relacionamentos necessários Uma classe que popule o sistema da seguinte forma: 2 Médicos 2 Pacientes 2 Atendimentos 2 Salas 1 UPA Uma classe que possua as listas de todos os objetos Uma classe que imprima todos os atendimentos Um validador de CPF, conforme proposto Dica: use padrões de projeto

Banco de Dados Ricardo Almeida Venieris <prds@les.inf.puc-rio.br>

Roteiro Mapeamento de objetos para modelo relacional Estratégias de persistência Persistência JDBC

Mapeando Objetos para o Modelo Relacional

Introdução Os princípios básicos do paradigma da orientação a objetos e do modelo relacional são bastante diferentes. No modelo de objetos, os elementos (objetos) correspondem a abstrações de comportamento. No modelo relacional, os elementos correspondem a dados no formato tabular.

Objetos transientes e persistentes Objeto transiente Existe somente na memória principal durante uma sessão de uso do sistema OO Objeto persistente Têm uma existência que perdura durante várias execuções do sistema OO Precisam ser armazenados quando a sessão de uso do sistema termina, e restaurados quando uma outra sessão é iniciada

Descasamento de informações Termo utilizado para denotar o problema das diferenças entre as representações do modelo OO e do modelo relacional Problema principal de conciliar as informações representadas pelo estado de um objeto e pelos dados armazenados em registros de uma tabela

Projeto de banco de dados O desenvolvimento do banco de dados a ser utilizado, se este não existir, é uma atividade do projeto detalhado Principais tarefas do projeto de banco de dados Construção do esquema do banco de dados Criação de índices Armazenamento físico dos dados Definição de visões sobre os dados armazenados Atribuição de direitos de acesso Políticas de backup dos dados

Conceitos do modelo relacional (overview) O conceito principal do modelo relacional é a relação Cada coluna de uma relação pode conter apenas valores atômicos Chave primária: coluna cujo valor pode ser utilizado para identificar unicamente cada linha de uma relação Chave estrangeira: valores de uma coluna fazem referência a valores de uma outra coluna (associação entre linhas) Uma chave estrangeira pode conter valores nulos (NULL) O NULL é normalmente usado para indicar que um valor não se aplica, ou é desconhecido, ou não existe

Conceitos do modelo relacional (overview)

Conceitos do modelo relacional (overview)

Mapeamento objetos modelo relacional O mapeamento de objetos para o modelo relacional é feito a partir do modelo de classes Necessidade do mapeamento dos valores de atributos de objetos persistentes para tabelas Semelhante ao mapeamento do MER O MER e o modelo de classes NÃO são equivalentes Esses modelos são freqüentemente confundidos O MER é um modelo de dados; o modelo de classes representa objetos (dados e comportamento)

Mapeamento objetos modelo relacional Notação (simplificada) Cada relação é representada pelo seu nome e pelos nomes de suas colunas entre parênteses Chaves primárias são sublinhadas Chaves estrangeiras são tracejadas Aqui usaremos sempre uma coluna de implementação como chave primária Uma coluna de implementação é um identificador sem significado no domínio de negócio

Mapeamento - classe e atributo Uma classe é mapeada para zero ou várias tabelas Um atributo é mapeado para uma ou mais colunas Nem todos os atributos de uma classe podem ser persistentes

Um exemplo

Mapeamento - associação Uma associação normalmente é mapeada para uma chave estrangeira Opcionalmente pode-se usar chaves estrangeiras nas duas relações Um exemplo

Um exemplo associação 1:1 Deve-se adicionar uma chave estrangeira em uma das duas relações para referenciar a chave primária da outra relação

Um exemplo associação 1:N Pode-se adicionar uma chave estrangeira na relação da classe que participa da associação no lado N para referenciar a chave primária da outra relação

Um exemplo associação 1:N Pode-se criar uma tabela associativa com chave primária composta de duas chaves estrangeiras referenciando as duas chaves primárias

Um exemplo associação N:N Criar uma tabela associativa com chave primária composta de duas chaves estrangeiras referenciando as duas chaves primárias

Mapeamento - auto-associação É uma forma especial de associação, podendo-se usar as mesmas técnicas anteriores

Mapeamento - associações N-árias Pode-se usar o procedimento semelhante ao mapeamento da associação N:N Uma relação para representar a associação é criada São adicionadas nesta relação chaves estrangeiras Se a associação n-ária possuir uma classe associativa, os atributos desta são mapeados como colunas da relação de associação

Mapeamento - associações N-árias

Mapeamento - classes associativas Deve-se criar uma relação para representar a classe associativa Os atributos da classe associativa são mapeados para colunas dessa relação Essa relação deve conter chaves estrangeiras que referenciem as relações correspondentes às classes que participam da associação

Mapeamento - classes associativas

Mapeamento - agregação e composição Pode-se utilizar o mesmo procedimento para o mapeamento de associações Na composição, deve-se ter cuidado na hora de atualizar ou remover o todo Remoção ou atualização em cascata Uso de gatilhos e procedimentos armazenados Cuidado também no acesso e na restauração (tanto de agregações quanto de composições) Quando um objeto todo deve ser restaurado, é natural restaurar também os objetos parte Definição de índices adequados para acesso eficiente às parte

Herança Abordagem Tabela por Subclasse Tabela por Hierarquia Tabela por Classe Concreta Deve ser feito uma analise sobre qual forma deve ser abordada para cada hierarquia Não existe a melhor técnica

Herança

Herança Tabela por Subclasse Uma tabela do banco para cada subclasse e uma para a super-classe Na tabela da subclasse deve ter as propriedades especificas da subclasse Vantagens Permite definir restrições nas colunas Tabelas Normalizadas Desvantagens Por causa dos JOINS tem desempenho inferior a estratégia por Hierarquia

Herança Tabela por Hierarquia Todos os atributos são colocados em uma única tabela Necessita uma coluna para identificar o tipo Vantagem Simples implementação Fácil inclusão de classes Bom suporte a polimorfismo Acesso rápido Desvantagens A modificação de uma classe pode afetar outras classes na hierarquia Desperdício de espaço Pode gerar tabelas muito grandes Atributos não podem ter restrições do tipo not-null

Herança Tabela por Classe Concreta Cada classe concreta é mapeada para uma tabela Vantagem Boa performance para acesso de um único objeto Permite definir restrições nas colunas Facilidade de mapear esquemas legados Desvantagem Modificação de uma classe acarreta na modificação de sua tabela e todas as classes filhas Dificuldade de manter diversos papeis para um único objeto Dificuldade de modificar um papel de um objeto Redundância de colunas

Estratégias de Persistência

Estratégias de persistência Acesso direto ao banco de dados Uso do padrão DAO (Data Access Object) Uso de framework de persistência

Estratégia acesso direto Fazer com que cada objeto persistente possua comportamento que permita a sua restauração, atualização ou remoção O objeto tem operações cujos métodos possuem código SQL para realizar a inserção, remoção, atualização e consulta das tabelas onde está armazenado É de fácil implementação

Estratégia acesso direto Justificável apenas para sistemas simples A lógica da aplicação fica desprotegida de eventuais modificações na estrutura do banco de dados A coesão das classes diminui, porque cada classe deve possuir responsabilidades relativas ao armazenamento e materialização de seus objetos, além de ter responsabilidades inerentes ao negócio Dificuldades de manutenção e extensão do código fonte praticamente proíbe a utilização desta estratégia em sistemas complexos Mais complicado migrar o sistema OO de um SGBD para outro

Estratégia de persistência acesso DAO O padrão DAO desacopla as classes do negócio dos aspectos relativos ao acesso ao armazenamento persistente Nessa estratégia, um sistema OO obtém acesso a objetos de negócio através de uma interface, chamada interface DAO Classes que implementam essa interface transformam informações provenientes do mecanismo de armazenamento em objetos de negócio, e vice-versa A implementação dos objetos destas classes simplesmente não faz diferença para a aplicação O objeto DAO isola completamente os seus clientes das particularidades do mecanismo de armazenamento (fonte de dados) sendo utilizado

Estratégia de persistência acesso DAO

Estratégia de persistência acesso DAO

Persistência com JDBC

Introdução JDBC (Java Database Connectivity) Biblioteca de classes Java Faz conexão com bancos de dados relacionais Driver Ponte para um banco de dados relacional Driver JDBC Ponte entre o JDBC e um banco de dados relacional

Introdução

JDBC Exemplo (mysql) public class Conexao { public Conexao() throws Exception { Connection conn = null; Statement st = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://server/sistema", "user", "password"); st = conn.createstatement(); rs = st.executequery("select id, nome FROM pessoa"); while (rs.next()) System.out.println(rs.getInt("id") + "\t" + rs.getstring( nome")); } catch (ClassNotFoundException e) { throw new Exception("Classe do Oracle não encontrada.", e); } catch (SQLException e) { throw new Exception("Erro de SQL.", e); } finally { if (rs!= null) rs.close(); if (st!= null) st.close(); if (conn!= null) conn.close(); } } }

JDBC: Driver Registra o Driver Class.forName( oracle.jdbc.driver.oracledriver ); Não é necessário criar uma instância do driver Chamada a Class.forName faz isto automaticamente Após o carregamento, o driver está disponível para efetuar conexões com um banco de dados Forma geral para o estabelecimento de uma conexão DriverManager.getConnection("jdbc:oracle://server/sistema ", "user", "password"); Mais:http://docs.oracle.com/cd/E14072_01/appdev.112/e13995/ oracle/jdbc/oracledriver.html

JDBC: URL URL de acesso Informa a forma de acesso e a localização do SGBD jdbc:<protocolo>://<server>:<porta><: /><sistema> Protocolo Java: (oracle, mysql, microsoft, etc) Localização do SGBD: server (poderia ser um IP) Porta de acesso: (um número) Database: sistema Essa informação varia de SGBD para SGBD Oracle: jdbc:oracle:thin:@server:1521:xe ou jdbc:oracle:thin:@server:1521:orcl MS SQL: jdbc:microsoft:sqlserver://server:1433

JDBC: manipulando a base Objeto Statement Usado para enviar comando SQL ao SGBD Para se criar um objeto Statement é preciso ter um objeto Connection ativo Statement stmt = conn.createstatement();

JDBC: manipulando a base Após a criação de um objeto Statement Para o comando SQL SELECT, deve-se usar o método executequery Para os demais comandos SQL, deve-se usar o método executeupdate st.executeupdate("create TABLE "pessoa" ("id" NUMBER(11,0) NOT NULL, "nome" VARCHAR2 (255 BYTE) NOT NULL)"); st.executequery("select id, nome FROM pessoa");

JDBC: recuperando dados Objeto ResultSet Um Statement retorna o resultado de um comando SQL em um objeto ResultSet ResultSet rs = st.executequery("select id, nome FROM pessoa"); O objeto rs possui linhas de id e conteudo Método next() deve ser usado para percorrer o ResultSet Uma chamada a next() move o cursor uma linha por vez do início ao fim do ResultSet

JDBC: recuperando valores Métodos getx de ResultSet Ex.: método para recuperar valor do tipo VARCHAR é getstring Ex.: método para recuperar valor do tipo FLOAT é getfloat Do exemplo anterior ResultSet rs = st.executequery("select id, nome FROM pessoa"); while (rs.next()) System.out.println(rs.getInt("id") + "\t" + rs.getstring("nome"));

Exercício 3 O objetivo dos exercícios é fixar os conceitos de: Conexão com o Banco, Criação de Tabela, Inserção e Alteração de Registros Conectar o banco PRDS e listar em console da tabela alunos todos os dados dos alunos que sejam do tipo Graduação. Descubra e guarde qual o seu ID, será importante para as próximas aulas. O projeto deve possuir uma classe main.main que execute a aplicação. TIPO BD: orcl HOST = 139.82.24.102 PORT = 1521 USER = prds PASS = lesprds2013 Query sugerida: select * from alunos where TP_ALUNO = 'Graduação 54

Obrigado 24/01/2013 Ricardo Almeida Venieris