Troca de Camada para JPA e EJB

4 respostas
H

Ola Pessoal tenho um código rodando no netbeens, aonde eu tenho a minha camada de Banco de Dados e a minha camada de negocio. Eu gostaria de saber como eu faço para trocar a minha camada de Banco de Dados JBDC por uma camada JPA. Além disso, as validações (regras de negócio), quero fazer em um EJB onde os servlets da aplicação irão acessar este EJB para executar as regras.
Peço por gentileza a ajuda de vocês. Abraço a todos.

[/b]Meu codigo Banco de Dados.
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 *
 */
public class ComandosBanco {
    
    public Connection con;                          //variaveis de uso comum
    public PreparedStatement ps;
    public ResultSet rs;
    private int controle=0;
    
   

    public void conectaBanco()throws Exception{                 //conecta com o banco
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/bancorandom"; //"local" do banco
        String user = "root";  //usuario.
        String password = "1"; //senha 
        con = DriverManager.getConnection(url, user, password);
    }
    
     public void inserir(String nome, String idade, String bairro, String endereco, String cpf){    //funcao para iserir
        try {

            PreparedStatement ps = con.prepareStatement("insert into pessoa values(default,?,?,?,?,?)");
            ps.setString(1,nome);
            ps.setString(2,idade);                               //insere no banco com os valores dos parametros que recebeu
            ps.setString(3,bairro);                              //com excessao do codigo, que esta como default devido ao
            ps.setString(4,endereco);                            //auto_increment
            ps.setString(5,cpf);

            ps.executeUpdate();
            
            setControle(1);                                      //variavel para controle, se a operacao foi bem
                                                                 //secedida(nao entrou no catch), ela é setada
        } catch (SQLException e) {                               //em 1, senao, ela é setada em 0.
            e.printStackTrace();
            setControle(0);
        }
    }
     
       public void excluir(String codigo){
        try {
            
            PreparedStatement ps = con.prepareStatement("DELETE FROM pessoa WHERE codigo=?");

            ps.setString(1,codigo);              //deleta o codigo recebido do banco 
            setControle(ps.executeUpdate());   //executeUpdate retorna o numero de colunas afetadas
           
       }
        catch (Exception e) {
            e.printStackTrace();
            setControle(0);
        }

    }
       
       
       public void alterar(String codigo, String nome, String idade, String bairro, String endereco, String cpf){

     
     try{
         PreparedStatement ps = con.prepareStatement("SELECT * FROM pessoa WHERE codigo=?");
         ps.setString(1,codigo);                   //altera do banco com o codigo recebido
         ResultSet rs = ps.executeQuery();
         
        
             ps = con.prepareStatement("update pessoa set nome=?,idade=?,bairro=?,endereco=?,cpf=?  WHERE codigo=?");
             
             ps.setString(1, nome);              //altera para os novos dados cujo foram recebidos por parametros
             ps.setString(2, idade);
             ps.setString(3, bairro);
             ps.setString(4, endereco);
             ps.setString(5, cpf);
             ps.setString(6, codigo);
             
             setControle(ps.executeUpdate());

     } catch(Exception e){
           e.printStackTrace();
           setControle(0);
     }
  }
       
       public void pesquisar (String codigo) {
        try {
            ps = con.prepareStatement("SELECT * FROM pessoa WHERE codigo=?");
            ps.setString(1,codigo);           //seleciona no banco o registro com o codigo recebido por parametro
            rs = ps.executeQuery();
            
            
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
  
       }
     
       public ResultSet retornaTudo () {
           ResultSet rs = null;
           
           try {
            ps = con.prepareStatement("SELECT * FROM pessoa");
            rs = ps.executeQuery();                //seleciana todos registros do banco e os coloca dentro de rs
            
            
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
          
           return rs;                               //retorna rs para o Negocio
       }

    
    public int getControle() {                     //get/set da variavel de controle
        return controle;
    }

    
    public void setControle(int controle) {
        this.controle = controle;
    }

   
    

}

Minha camada de Negocio.
[b]ALTERA DADOS

import br.unisc.BancoDeDados.ComandosBanco;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * 
 */
@WebServlet(name = "ControleAlterar", urlPatterns = {"/ControleAlterar"})
public class ControleAlterar extends HttpServlet {

   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
    }

    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
        
        ComandosBanco cb = new ComandosBanco();              //intancia e conecta com o banco
        try {
            cb.conectaBanco();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
     
            
            String codigo = request.getParameter("codigo");         //pega os parametros da pagina
            String nome = request.getParameter("nome");
            String idade = request.getParameter("idade");
            String bairro = request.getParameter("bairro");
            String endereco = request.getParameter("endereco");
            String cpf =request.getParameter("cpf");
            
           
            
            try{
            cb.alterar(codigo,nome,idade,bairro,endereco,cpf);          //chama a funcao alterar do banco com os parametros lidos
            }
            catch(Exception e){
                e.printStackTrace();
            }
            
            
            if(cb.getControle()==1){                          //testa se deu certo
            response.sendRedirect("TudoBelezinha.jsp");
            }
            else{
                response.sendRedirect("Erro.jsp");
            }
            
            
        }
        
        
        
    }

EXCLUI DADOS.

import br.unisc.BancoDeDados.ComandosBanco;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 */
@WebServlet(name = "ControleExclusao", urlPatterns = {"/ControleExclusao"})
public class ControleExclusao extends HttpServlet {

    
    ComandosBanco cb = new ComandosBanco();
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        
    }

   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
        
        String codigo = request.getParameter("codigo");         //pega o codigo da pagina
        try {
            cb.conectaBanco();                        //conecta com o banco
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
            cb.excluir(codigo);          //chama excluir
            
            if(cb.getControle()==1){                          //tsta se deu certo
            response.sendRedirect("TudoBelezinha.jsp");
            }
            else{
                response.sendRedirect("Erro.jsp");
            }
        
        
    }

  
    
}

4 Respostas

wagnerfrancisco

Mas você já estudou sobre EJB e JPA? Já começou a fazer, está com alguma dúvida?

Tem bastante coisa pra entender, não é tão simples assim. Mas se vc ler a documentação certamente vai conseguir começar.

Hebert_Coelho

wagnerfrancisco:
Mas você já estudou sobre EJB e JPA? Já começou a fazer, está com alguma dúvida?

Tem bastante coisa pra entender, não é tão simples assim. Mas se vc ler a documentação certamente vai conseguir começar.

Exato.

Não é coisa simples assim não.

Aqui tem até um exemplo que utiliza EJB e JPA, mas se eu fosse você estudava um pouco antes sobre JPA e EJB: Aplicação Web Completa JSF EJB JPA JAAS.

H

Sim estou estudando JPA e EJB, mas não estou entendendo muito. Teria como voces me da um exemplo po gentileza no meu codigo…
Abraço a todos

igor_ks

sinceramente acho menos trabalhoso comecar outro projeto e for copiando o que vc puder, do que ficar alterando e gerando erros que ficam dificilimos de encontrar

Pra comecar, pega suas classes de dominio, e anota elas com as anotacoes JPA. Vc nem vai precisar mais dessa classe ai de ComandosBanco, pq vc fez td em JDBC puro.
Vai indo devagar, atropelar as coisas vai fazer vc perder mais tempo devido aos erros cabulosos que podem vir a aparecer.

Criado 23 de novembro de 2012
Ultima resposta 23 de nov. de 2012
Respostas 4
Participantes 4