[RESOLVIDO]Armazenas dados temporáriamente + Primefaces

Bom tarde.

Estou desenvolvendo uma tela de cadastro.
O meu problema é o seguinte:

O usuário entra no sistema e digitas os dados pessoais e os telefones, porem quero que ele vá digitando os telefones e eles apareção em uma lista de N telefones. Para só depois salvar no BD ligando o id do cadastro do cliente com a tabela dos telefones, ou seja salvar tudo de uma vez. Como eu posso fazer isso?

Segue as classe para melhor visualização.

package br.com.autocom.modelo;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;

@SequenceGenerator(name = "Cadastro_Sequencia", sequenceName = "Cadastro_Sequencia")
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Cadastro implements Serializable{
	private static final long serialVersionUID = 1L;
	
	@Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="Cadastro_Sequencia")
	@Column(name="codigoCadastro")
	private int codigoCadastro;
	private String razaoSocial;
	private String nomeFantasia;
	private String endereco;
	private String cep;
	private String setor;
	private String obs;
	private String cnpjCPF;
	private Date dataAtualizado;
	private Date dataCadastro;
	private Date dataSuspensao;
	private String email;
	private String InscRg;
	private String cidade;
	private String estado;
	
	@OneToMany(cascade = { CascadeType.ALL, CascadeType.ALL })
	@JoinColumn(name = "codigoTelefone")
	private List<Contato> telefone;
	
	public int getCodigoCadastro() {
		return codigoCadastro;
	}
	public void setCodigoCadastro(int codigoCadastro) {
		this.codigoCadastro = codigoCadastro;
	}
	public String getRazaoSocial() {
		return razaoSocial;
	}
	public void setRazaoSocial(String razaoSocial) {
		this.razaoSocial = razaoSocial;
	}
	public String getNomeFantasia() {
		return nomeFantasia;
	}
	public void setNomeFantasia(String nomeFantasia) {
		this.nomeFantasia = nomeFantasia;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public String getCep() {
		return cep;
	}
	public void setCep(String cep) {
		this.cep = cep;
	}
	public String getSetor() {
		return setor;
	}
	public void setSetor(String setor) {
		this.setor = setor;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	public String getCnpjCPF() {
		return cnpjCPF;
	}
	public void setCnpjCPF(String cnpjCPF) {
		this.cnpjCPF = cnpjCPF;
	}
	public Date getDataAtualizado() {
		return dataAtualizado;
	}
	public void setDataAtualizado(Date dataAtualizado) {
		this.dataAtualizado = dataAtualizado;
	}
	public Date getDataCadastro() {
		return dataCadastro;
	}
	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}
	public Date getDataSuspensao() {
		return dataSuspensao;
	}
	public void setDataSuspensao(Date dataSuspensao) {
		this.dataSuspensao = dataSuspensao;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getInscRg() {
		return InscRg;
	}
	public void setInscRg(String inscRg) {
		InscRg = inscRg;
	}
	public List<Contato> getTelefone() {
		return telefone;
	}
	public void setTelefone(List<Contato> telefone) {
		this.telefone = telefone;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	
}
package br.com.autocom.modelo;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;

@Entity
//@SequenceGenerator(name = "CadastroProduto_Sequencia", sequenceName = "CadastroProduto_Sequencia")
@SequenceGenerator(name="Cadastro_Sequencia", sequenceName="CadastroFornecedor_Sequencia")  
public class CadastroFornecedor extends Cadastro implements Serializable {
	private static final long serialVersionUID = 1L;

	private boolean horarioSerico;
	private boolean automacao;
	
	public boolean isHorarioSerico() {
		return horarioSerico;
	}
	public void setHorarioSerico(boolean horarioSerico) {
		this.horarioSerico = horarioSerico;
	}
	public boolean isAutomacao() {
		return automacao;
	}
	public void setAutomacao(boolean automacao) {
		this.automacao = automacao;
	}
}
package br.com.autocom.modelo;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;

@Entity
@SequenceGenerator(name = "Contato_Sequencia", sequenceName = "Contato_Sequencia")
public class Contato implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="Contato_Sequencia")
	@Column(name="codigoContato")
	private int codigoContato;
	private String numeroTelefoneEmail;
	private String nomeContato;
	private int tipoContato;
	
    @ManyToOne(cascade=CascadeType.DETACH)
    private Cadastro cadastro;

	public int getCodigoContato() {
		return codigoContato;
	}

	public void setCodigoContato(int codigoContato) {
		this.codigoContato = codigoContato;
	}

	public String getNumeroTelefoneEmail() {
		return numeroTelefoneEmail;
	}

	public void setNumeroTelefoneEmail(String numeroTelefoneEmail) {
		this.numeroTelefoneEmail = numeroTelefoneEmail;
	}

	public String getNomeContato() {
		return nomeContato;
	}

	public void setNomeContato(String nomeContato) {
		this.nomeContato = nomeContato;
	}

	public int getTipoContato() {
		return tipoContato;
	}

	public void setTipoContato(int tipoContato) {
		this.tipoContato = tipoContato;
	}

	public Cadastro getCadastro() {
		return cadastro;
	}

	public void setCadastro(Cadastro cadastro) {
		this.cadastro = cadastro;
	}
    
    
}

Devo usar oque para armazenar esses contatos provisóriamente? E como salvá-los interligando com o cadsatro? Estou usando o Hibernate e Primefaces.

Não é preciso salvar em algum lugar, basta adicionar ao Cadastro.

cadastro.getTelefones().add(telefone);

Quando salvar, usando o cascade de maneira correta, ele irá salvar o contato e os telefones associados a ele. Recomendo criar um método para isso, evitando que a lista de contatos seja chamada deste maneira em qualquer lugar.

Mas se mesmo assim quiser salvar, pode usar session.