Troca de Camada para JPA e EJB

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.[b]

[code]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;
}

}[/code]

Minha camada de Negocio.
ALTERA DADOS

[code]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");
        }
        
        
    }
    
    
    
}[/code]

EXCLUI DADOS.

[code]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");
        }
    
    
}

}[/code]

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.

[quote=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.[/quote]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.

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

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.