JSF ou Técnica Errada?

Pessoal,

Olha que estranho o resultado de um simples formulário, seria isso um comportamento do JSF? Isso não seria prejudicial?
Como fazer para ter controle da consulta que ele realiza após submeter o formulário?

Esse é meu XHTML:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	  xmlns:h="http://java.sun.com/jsf/html"
	  xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:ui="http://java.sun.com/jsf/facelets"
	  xmlns:p="http://primefaces.org/ui">
	  
	  <f:view  encoding="UTF-8" contentType="text/html">
	  
		<h:head>
			<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
			<title>Insert title here</title>
		</h:head>
		<h:body>
	
			<h:form id="frm" prependId="false">
			<p:panel id="panel1">
			
				<p:inputText value="#{pessoaBean.pessoa.id}" /><br />
				<p:inputText value="#{pessoaBean.pessoa.nome}" /><br />
				<p:selectOneMenu value="#{pessoaBean.pessoa.cargo}">
					<f:selectItem itemLabel="Qual o seu cargo?" />
					<f:selectItems value="#{pessoaBean.cargos}" var="cargo" itemLabel="#{cargo.cargo}" itemValue="#{cargo}" />
				</p:selectOneMenu><br /><br />
				
				<p:commandButton value="Salvar" action="#{pessoaBean.gravar}" update="panel1" />
			
			</p:panel>
			</h:form>
	
		</h:body>
	
	</f:view>
	
</html>

Agora olha o meu MB:

package br.com.views;

imports ....

@ManagedBean
@ViewScoped
public class PessoaBean implements Serializable {

	private static final long serialVersionUID = 1902384631923162403L;

	private Pessoa pessoa;
	private List<CargosFuncoes> cargos;
	
	public PessoaBean() {
		this.pessoa = new Pessoa();
	}
	
	@PostConstruct
	public void init(){
		GlobalRN globalRN = new GlobalRN();
		this.cargos = globalRN.listaCargos();
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public List<PessoaUsuario> getPessoas() {
		return pessoas;
	}

	public void setPessoas(List<PessoaUsuario> pessoas) {
		this.pessoas = pessoas;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	
	public List<CargosFuncoes> getCargos() {
		return cargos;
	}

	public void setCargos(List<CargosFuncoes> cargos) {
		this.cargos = cargos;
	}

	public void gravar(){
		PessoaRN pessoaRN = new PessoaRN();
		pessoaRN.salvar(this.pessoa);
	}
	
}

Agora vejam o resultado… Por que ele retorna os objetos que já estão na tela preenchidos, não estou gostando disso… E pior, não tenho controle sobre esse retorno, acredito que pode ser um comportamento do JSF, ou não?

Hibernate: 
    select
        this_.id_cargo as id1_8_0_,
        this_.sn_ativo as sn2_8_0_,
        this_.ds_cargo as ds3_8_0_,
        this_.sn_liberado as sn4_8_0_ 
    from
        cargos_funcoes this_ 
    where
        this_.id_cargo=?
Hibernate: 
    select
        pessoa0_.id as id32_0_,
        pessoa0_.cd_cargo as cd3_32_0_,
        pessoa0_.nome as nome32_0_ 
    from
        Pessoa pessoa0_ 
    where
        pessoa0_.id=?
Hibernate: 
    insert 
    into
        Pessoa
        (cd_cargo, nome) 
    values
        (?, ?)

Alguém teria alguma dica?

Valeu pessoal.