quarta-feira, 13 de junho de 2012

O padrão DAO - Data Access Object
Este padrão permite criar as classes de dados independentemente da fonte de dados ser um BD relacional, um arquivo texto, um arquivo XML, etc. Para isso, ele encapsula os mecanismos de acesso a dados e cria uma interface de cliente genérica para fazer o acesso aos dados permitindo que os mecanismos de acesso a dados sejam alterados independentemente do código que utiliza os dados.



package br.delphos.persistencia;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DAO {

    Connection con;
    PreparedStatement pstm;
    ResultSet rs;
   
    public void abrirBanco() throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/sistema1";
        String use = "root";
        String password = "08515453";
        con = DriverManager.getConnection(url, use, password);   
       }
   public void fecharBanco()throws Exception{
       if(con != null)
           con.close();
       if(pstm != null)
           pstm.close();
   }
}

--------------------------------------------------------------------------------------------------------

package br.delphos.persistencia;

import br.delphos.modelo.Pessoa;

public class PessoaDAO extends DAO {
   
 public void deletar(int x)throws Exception{
     abrirBanco();
     String query = "delete from pessoa where id=?";
     pstm = con.prepareStatement(query);
     pstm.setInt(1, x);
     pstm.execute();
    
     fecharBanco();
 }
 public void gravar(Pessoa p)throws Exception{
       abrirBanco();
       pstm = con.prepareStatement("insert into pessoa values(null, ?, ?,?)");
       pstm.setString(1,p.getNome());
       pstm.setString(2,p.getEmail());
       pstm.setString(3, p.getSexo());
       pstm.execute();
       fecharBanco();
    }
   
 public void update(Pessoa p)throws Exception{
    abrirBanco();
    String query = "update pessoa set nome=?, email=?, sexo = ? where id =? ";
    pstm = con.prepareStatement(query);
    pstm.setString(1, p.getNome());
    pstm.setString(2, p.getEmail());
    pstm.setString(3, p.getSexo());
    pstm.executeUpdate();
    fecharBanco();
   
    }
   
   
   public Pessoa buscarporId(int id)throws Exception{
       abrirBanco();
       Pessoa p = new Pessoa();
      
       String query = "select * from pessoa where id=?";
       pstm = con.prepareStatement(query);
       pstm.setInt(1, id);
       rs = pstm.executeQuery();
       if(rs.next()){
           p.setId(rs.getInt("id"));
           p.setNome(rs.getString("nome"));
           p.setEmail(rs.getString("email"));
           p.setSexo(rs.getString("sexo"));
          
       }
      
       fecharBanco();
        return p;    
   }
   
}
------------------------------------------------------------------------------------------------------
 Visão - View
"Renderiza" o model em uma forma específica para a interação, geralmente uma interface de usuário.

package br.delphos.visao;
import br.delphos.modelo.Pessoa;
import br.delphos.persistencia.PessoaDAO;
import java.util.Scanner;

public class Atualizar{

public static void main(String args[]){
  Atualizar a = new Atualizar(); 
  a.atualizar();
}
 public void atualizar(){
    try{
        Scanner sc = new Scanner(System.in);
        PessoaDAO pd = new PessoaDAO();   
        Pessoa p1 = new Pessoa();
       
        System.out.printf("Digite um id a ser atulizado: ");
        p1.setId(sc.nextInt());
        sc.nextLine();
        System.out.printf("Digite o nome a ser atualizado: ");
        p1.setNome(sc.nextLine());
        System.out.printf("Digite o e-mail para ser atualizado: ");
        p1.setEmail(sc.nextLine());
        System.out.printf("Digite o sexo a ser atulizado: ");
        p1.setSexo(sc.nextLine());
        pd.update(p1);
        System.out.printf("Atulizado com exito");
        }
         catch(Exception e){
         System.out.println("erro " + e.getMessage());
         }
       
 }
}
------------------------------------------------------------------------------------------------------

package br.delphos.visao;

import br.delphos.modelo.Pessoa;
import br.delphos.persistencia.PessoaDAO;
import java.util.Scanner;


public class Consultar{
   
    public static void main(String arg[]){
    Consultar c = new Consultar();
    c.buscarID();
   
}
    public void  buscarID(){
         Scanner input = new Scanner(System.in);
         PessoaDAO pd = new PessoaDAO();
     try{
        
         System.out.printf("Digite um id para buscar: ");
         Pessoa p = pd.buscarporId(input.nextInt());
   
         System.out.println("Id: "+p.getId());
         System.out.println("Nome:  "+p.getNome());
         System.out.println("E-mail: "+ p.getEmail());
         System.out.println("Sexo: "+p.getSexo());
        
     }
     catch(Exception e){
     System.out.println("Error "+e.getMessage());
     }
    }

}
--------------------------------------------------------------------------------------------------
package br.delphos.visao;

import br.delphos.persistencia.PessoaDAO;
import java.util.Scanner;


public class Deletar {
 public static void main(String arg[]){
  Deletar m = new Deletar();
  m.excluir();
 }  

 public void excluir(){
     Scanner sc = new Scanner(System.in);
     PessoaDAO pd = new PessoaDAO();
     System.out.printf("Digite o numero do registro a ser excluido: ");
     try{
     pd.deletar(sc.nextInt());
     System.out.printf("Registro deletado com sucesso: ");
     }
     catch(Exception e ){
     System.out.println("Erro "+e.getMessage());
     }
    
 }

}
-------------------------------------------------------------------------------------------------------

package br.delphos.visao;

import br.delphos.modelo.Pessoa;
import br.delphos.persistencia.PessoaDAO;
import java.util.Scanner;

public class Main {

    public static void main(String args[]){
        Main m = new Main();
        m.gravar();
       
    }
    public void gravar(){
    try{
    Scanner s = new Scanner(System.in);
    Pessoa p = new Pessoa();
    PessoaDAO pd = new PessoaDAO();
    System.out.printf("Digite o nome: ");
    p.setNome(s.nextLine());
    System.out.printf("Digite o e-mail: ");
    p.setEmail(s.nextLine());
    System.out.printf("Digite o sexo: ");
    p.setSexo(s.nextLine());
    pd.gravar(p);
   
    System.out.println("inclusão feita com sucesso");
    }
    catch(Exception e){
    System.out.println("Erro: " +e.getMessage());
   
    }
   
}   
}



Este post tem o objetivo de expressar códigos java de forma livre obedecendo o padrão MVC 
Vários códigos como estes vão ser postados para iniciantes.
este e o modelo criado no netbeans:








package br.delphos.modelo;
public class Pessoa {
    private String  id;
    private String nome;
    private String sexo;
    private String email;
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getSexo() {
        return sexo;
    }
    public void setSexo(String sexo) {
        this.sexo = sexo;
    }
    public void setId(int nextInt) {
        this.id = id;
    }