Padrões de Projeto e Persistência com DAO



Documentos relacionados
Desenvolvimento de Aplicaçõ. ções em Java

Funcionamento da Aplicação. Simulações do funcionamento. Simulação SAC

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

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. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

JDBC. Prof. Márcio Bueno

Exercícios de fixação: Listas

Programação Orientada a Objetos II

JDBC. Java DataBase Connectivity

Desenvolvimento Web TCC Turma A-1

Código-Fonte da Prática 04

Leonardo Gresta Paulino Murta

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

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

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

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

Drive MySql de conexão para Eclipse

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

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

Acesso a Bancos de Dados em Java (JDBC)

Programação Orientada a Objetos JDBC Java Database Connectivity

Java e Conexão com Banco de Dados

Atividade JSP com Banco de Dados

MANIPULAÇÃO DE BANCO DE DADOS UTILIZANDO INTERFACE GRÁFICA

Acesso a banco de dados

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

Persistência Java para Web com MySQL

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

Driver Mysql para Banco de Dados. Conexão com um Banco de Dados

DATA ACCESS OBJECT (DAO)

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

J550 Integração com Bancos de Dados

Programação Orientada a Objetos II

Java - Conexão ao Banco de Dados usando JDBC

Integrando Java com Banco de Dados

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.

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

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

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

Introdução Conceitos Iniciais Metodologia Web Services Considerações Finais. Introdução. Conceitos Iniciais Metodologia

Autenticação e Autorização


Código-Fonte da Prática 02

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

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

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

Criando um aplicação simples com JAVA e MySQL usando NetBeans Parte I

Mapeamento Lógico/Relacional com JPA

JDBC Acessando Banco de Dados

JavaServer Faces JSF

JPA: Persistência padronizada em Java

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

Java na WEB Banco de Dados

Programação Orientada a Objetos (DPADF 0063)

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

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

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

JDBC Tópicos avançados de acesso a base de dados relacional

Tecnologias Java JDBC. Marcio Seiji Oyamada

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

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

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

Unidade 9: Middleware JDBC para Criação de Beans

Figura 1. A Classe Java

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

Banco de Dados. Banco de Dados

Spring Framework Luiz Daniel Creão Augusto Sistemas de Middleware Avançados IME-USP /02

Aula 1 Acesso a Banco de Dados

Linguagens de Programação

Modulo 8 - Padrão DAO (Dta Access Object) Prof. Sheila Cáceres

TUTORIAL DE INTRODUÇÃO AO CEWOLF

Acessando dados em Java com JDBC

Código do Sistema Ponto de Vendas

JAVA JDBC Java Database Connectivity

Como criar um banco de dados usando o mysql

Programação Comercial Sumário

Exibir relatórios gerados pelo Jasper Report em Flex

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

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

Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

Programação com Acesso a Banco de Dados

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

Projeto webservicejax

Especialização em web com interfaces ricas

Documentação Usando o Javadoc

Desenvolvimento de Aplicações para Internet Aula 9

Programação Orientada a Objetos no C#.NET usando Padrões de Projeto MARCELO SANTOS DAIBERT E MARCO ANTÔNIO PEREIRA ARAÚJO

Gerador de código JSP baseado em projeto de banco de dados MySQL

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Desenvolvendo Aplicações Web com NetBeans

Padrão J2EE Data Access Object (DAO)

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Persistência de Classes em Tabelas de Banco de Dados

Transcrição:

Curso de Análise de Sistemas Análise de Sistemas II Padrões de Projeto e Persistência com DAO Prof. Giuliano Prado de Morais Giglio, M.Sc.

Introdução a Padrões de Projeto Padrões de Projeto foram inicialmente percebidos na área de construção quando foram catalogados permitindo agilizar o processo de construção de prédios e casas. Posteriormente padrões de desenvolvimento de software começaram a ser identificados e catalogados. Hoje contamos com diversos livros para várias situações.

Importância de Padrões A importância desse tipo de técnica é o ganho que temos em desempenho no desenvolvimento de sistemas. Soluções que já foram testadas e comprovadas, isso aumenta a qualidade do software final e permite que analistas troquem informações com um vocabulário similar. Quando alguém diz que usou um certo padrão isso já transmite um conjunto de informações.

Principais Padrões Contamos com diversos padrões: DAO Data Access Object VO Value Object é um objeto do domínio da aplicação MVC Model View Controller permite construir a aplicação de forma modular sem amarrar a camada de apresentação com a parte de negócio

Padrão de Projeto DAO DAO Data Acess Object é uma classe especial que contém todas as informações necessárias para acessar uma ou mais tabelas e criar os objetos relacionados às linhas das tabelas.

Exemplo - DAO Pacote modelo Criação da classe Cliente.java Controla a criação e controle de objetos Cliente. Pacote persistencia Criação da classe Conexao.java Controla a abertura e fechamento da conexão com o banco de dados; Criação da classe ClienteDAO.java Controla a manipulação dos dados de clientes no banco Vários métodos para: Consultar todos clientes; Consultar um cliente específico; Inserir, excluir e atualizar um cliente específico

Criando classe de Conexão public class Conexao { public static Connection getconexao( ){ Connection con = null; try{ Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost/livraria", "root", "admin"); catch (Exception e) { System.out.println("falha na conexão"); return con; public static void fecharconexao(connection conn, Statement stmt, ResultSet rs){ if (rs!= null) rs.close( ); if (stmt!= null) stmt.close( ); if (conn!= null) conn.close( ); catch (Exception e) {

Criando classe de Conexão public static void fecharconexao(connection conn){ if (conn!= null) conn.close( ); catch (Exception e) { public static void fecharconexao(connection conn, PreparedStatement ps) { if (ps!= null) ps.close( ); if (conn!= null) conn.close( ); catch (Exception e) {

Criando classe de Persistência public class ClienteDAO { private Connection conn; public ClienteDAO( ) throws Exception{ this.conn = Conexao.getConexao( ); catch( Exception e ) { throw new Exception( "Erro: " + ":\n" + e.getmessage( ) );

Criando classe de Persistência - Método Salvar() - public void salvar(cliente cliente) throws Exception{ PreparedStatement ps = null; if (cliente == null) throw new Exception("O valor passado não pode ser nulo"); String SQL = "INSERT INTO clientes (nome, endereco, telefone, estado) values (?,?,?,?)"; ps = conn.preparestatement(sql); ps.setstring(1, cliente.getnome( )); ps.setstring(2, cliente.getendereco( )); ps.setstring(3, cliente.gettelefone( )); ps.setint(4, cliente.getestado( )); ps.executeupdate( ); JOptionPane.showMessageDialog(null,"Cliente cadastrado!","concluído",joptionpane.information_message); catch (SQLException sqle) { throw new Exception("Erro ao inserir dados "+ sqle); finally { Conexao.fecharConexao(conn,ps);

Criando classe de Persistência - Método atualizar() - public void atualizar(cliente cliente) throws Exception { PreparedStatement ps = null; if (cliente == null) throw new Exception("O valor passado não pode ser nulo"); String SQL = "UPDATE clientes SET nome=?, " + " endereco=?, telefone=? estado=? " + "where cliente_id=?"; ps = conn.preparestatement(sql); ps.setstring(1, cliente.getnome( )); ps.setstring(2, cliente.getendereco( )); ps.setstring(3, cliente.gettelefone( )); ps.setint(4, cliente.getestado( )); ps.executeupdate( ); catch (SQLException sqle) { throw new Exception("Erro ao atualizar dados: "+ sqle); finally { Conexao.fecharConexao(conn, ps);

Criando classe de Persistência - Método todosautores() - public List todosclientes( ) throws Exception{ PreparedStatement ps = null; ResultSet rs = null; ps = conn.preparestatement("select * from clientes"); rs = ps.executequery( ); List<Cliente> list = new ArrayList<Cliente>( ); while( rs.next( ) ) { String nome = rs.getstring( 2 ); String endereco = rs.getstring( 3 ); String telefone = rs.getstring( 4 ); Int estado = rs.getint( 5 ); list.add( new Cliente(nome,endereco,telefone,estado) ); return list; catch (SQLException sqle) { throw new Exception(sqle); finally { Conexao.fecharConexao(conn, ps, rs);

Criando classe de Persistência - Método procurarcliente() - public Cliente procurarcliente(integer id) throws Exception { PreparedStatement ps = null; ResultSet rs = null; ps = conn.preparestatement("select * from clientes where cliente_id=?"); ps.setint(1, id); rs = ps.executequery( ); if(!rs.next( ) ) { throw new Exception( "Não foi encontrado nenhum registro com o ID: " + id ); String nome = rs.getstring( 2 ); String endereco = rs.getstring( 3 ); String telefone = rs.getstring( 4 ); int estado = rs.getint( 5 ); return new Cliente(id, nome, endereco, telefone, estado) ; catch (SQLException sqle) { throw new Exception(sqle); finally { Conexao.fecharConexao(conn, ps, rs);

Criando classe de Persistência - Método excluir() - public void excluir(cliente cliente) throws Exception { PreparedStatement ps = null; if (cliente == null) throw new Exception("O valor passado não pode ser nulo"); ps = conn.preparestatement("delete from clientes where cliente_id=?"); ps.setint(1, cliente.getidcliente( )); ps.executeupdate( ); catch (SQLException sqle) { throw new Exception("Erro ao excluir dados:" + sqle); finally { Conexao.fecharConexao(conn, ps);

Tela de cadastro de clientes

Evento de Cadastro... String n = tfnome.gettext(); String e = tfend.gettext(); String t = tftel.gettext(); int es = cbox.getselectedindex(); ClienteDAO cli = new ClienteDAO(); cli.salvar(new Cliente(n,e,t,es));...

Evento de Consulta... int id = Integer.parseInt(JOptionPane.showInputDialog("Digite o código do cliente:")); ClienteDAO cd = new ClienteDAO(); Cliente cli = cd.procurarcliente(id); tfnome.settext(cli.getnome()); tfend.settext(cli.getendereco()); tftel.settext(cli.gettelefone()); cbox.getitemat(cli.getestado());...