Ajuda Primefaces

Pessoal, é o seguinte, estou desenvolvendo um cadastro bem básico só para treinar.

Estou usando o padrão MVC, pelo que li, se cria uma classe (no meu caso Usuário) na parte model, um ManagedBean também na parte Model certo?

Os views contém as minhas telas de cadastro e relatório e o dao na parte de controller

Seguem as classes:

Pessoa

[code]
public class Pessoa {

private String nome;
private String sobrenome;

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getSobrenome() {
    return sobrenome;
}

public void setSobrenome(String sobrenome) {
    this.sobrenome = sobrenome;
}

}[/code]

PessoaBean

@ManagedBean(name="PessoaBean")
@RequestScoped
public class PessoaBean {
   
    private Pessoa pessoa;
    
    public PessoaBean(){
        
        pessoa = new Pessoa();
        
    }
    
    public Pessoa getPessoa() {
        return pessoa;
    }
    
    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }
    
    public void salvar(Pessoa p){
        
    }
    
}

CadastroPessoa

[code]
<h:head>
Cadastro de Usuário
</h:head>

<h:form >

        Nome: <h:inputText id="nome" value="#{PessoaBean.pessoa.nome}"/>
        <br/>
        Sobrenome: <h:inputText id="sobrenome" value="#{PessoaBean.pessoa.sobrenome}"/>
        <br/>
        <p:commandButton action="{}"/>
    </h:form>
</body>
[/code]

E o dao

[code]
public class PessoaDAO {

public void salvar(Pessoa p){
    
    Connection con = Conexao.getConnection();
    String sql = "INSERT INTO pessoa (nome,sobrenome) VALUES (?,?)";
    
    
    try{
    PreparedStatement pstm = con.prepareStatement(sql);
    
    //Define os valores das interrogações
    pstm.setString(0, p.getNome());
    pstm.setString(1, p.getSobrenome());
    
    
    pstm.executeUpdate();
    pstm.close();
    con.close();
    }
    catch(Exception e){
        System.out.println(e.getMessage());
    }
    
}

public List<Pessoa> listarTodas(){
    Connection con = Conexao.getConnection();
    List<Pessoa> pessoas = new ArrayList<Pessoa>();
    
    
    String sql = "SELECT *"
            + "FROM tbl_pessoa";
    try{
        Statement stm = con.createStatement();
        ResultSet rs = stm.executeQuery(sql);
        
        while(rs.next()){
            Pessoa p = new Pessoa();
            p.setNome(rs.getString("nome"));
            p.setSobrenome(rs.getString("sobrenome"));
            
            pessoas.add(p);
        }
    }
    catch(Exception e){
        System.out.println(e.getMessage());
    }
    
    return pessoas;
}

public Pessoa listar(Pessoa p){
    
    String sql = "SELECT *"
            + " FROM tbl_pessoa"
            + "WHERE ID = ";
    try{
        Connection con = Conexao.getConnection();
        Statement stm = con.createStatement();
        ResultSet rs = stm.executeQuery(sql);
        
        while(rs.next()){
            //Cria o objeto
            p = new Pessoa();   
            p.setNome(sql);
            p.setSobrenome(sql);
        }
        }
    catch(Exception e){
        System.out.println(e.getMessage());
    }
    
    
    return p;
    
}

}[/code]

então, parei na parte do Cadastro da tela mesmo, vi a parte onde eu colocava no value dos inputs o caminho pelo managedBean, até ai entendi, mas e depois daí, vou enviar o action do commandButton pra onde? pro método para poder salvar ? Se sim, na Hora de passar o objeto para esse método? como farei?

No action você chama o botão salvar. E o método basta fazer:

public String salvar(){  
         pessoaDAO.salvar(pessoa); //pessoaDAO já deve estar instanciado.
  return "sucesso"; 
    } 



//Ou caso use actionListener no botão

public void salvar(ActionEvent actionEvent){
    pessoaDAO.salvar(pessoa);
}