Class Cliente
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name = "cliente")
@NamedQueries({
@NamedQuery(name = "Cliente.ListarTodos", query = "Select c from Cliente c"),
@NamedQuery(name = "Cliente.consulta", query= "Select c from Cliente c where c.cpf = :cpf")
})
public class Cliente implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "codigo")
private Long codigo;
@Column(name = "nome", length = 50, nullable = false)
private String nome;
@Column(name = "cpf", length = 20, nullable = false)
private String cpf;
@Column(name = "telefone", length = 20)
private String telefone;
@Column(name = "celular", length = 20, nullable = false)
private String celular;
@Column(name = "observacao", length = 40)
private String observacao;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "enderedo_codigo", referencedColumnName = "codigo")
private Endereco endereco = new Endereco();
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
public String getObservacao() {
return observacao;
}
public void setObservacao(String observacao) {
this.observacao = observacao;
}
}
Classe ClienteDAO
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import br.com.bercalini.borracharia.modelo.Cliente;
import br.com.bercalini.borracharia.modelo.Endereco;
public class ClienteDAO {
public void cadastrar(Cliente cliente, Endereco endereco) {
EntityManager em = new JPAUtil().geEntityManager();
em.getTransaction().begin();
em.persist(cliente);
em.persist(endereco);
em.getTransaction().commit();
em.close();
}
public void remover(Cliente cliente) {
EntityManager em = new JPAUtil().geEntityManager();
em.getTransaction().begin();
em.remove(em.merge(cliente));
em.getTransaction().commit();
em.close();
}
public void atualizar(Cliente cliente, Endereco endereco) {
EntityManager em = new JPAUtil().geEntityManager();
em.getTransaction().begin();
em.merge(cliente);
em.merge(endereco);
em.getTransaction().commit();
em.close();
}
public Cliente buscarPorId(Long codigo) {
EntityManager em = new JPAUtil().geEntityManager();
Cliente cliente = em.find(Cliente.class, codigo);
em.close();
return cliente;
}
@SuppressWarnings("unchecked")
public List<Cliente> lstClientes() {
EntityManager em = new JPAUtil().geEntityManager();
List<Cliente> lista = em.createNamedQuery("Cliente.ListarTodos").getResultList();
em.close();
return lista;
}
public Cliente consultaCpf(Cliente cliente) {
EntityManager em = new JPAUtil().geEntityManager();
Query query = em.createNamedQuery("Cliente.consulta");
try{
query.setParameter("cpf", cliente.getCpf());
Cliente singleResult = (Cliente) query.getSingleResult();
return singleResult;
}catch(NoResultException ex) {
return cliente;
}
}
Classe ClienteBean
@ManagedBean
@SessionScoped
public class ClienteBean {
private Cliente cliente;
private Endereco endereco;
private List<Cliente> clientes = new ClienteDAO().lstClientes();
public Cliente getCliente() {
if (cliente == null) {
cliente = new Cliente();
}
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public Endereco getEndereco() {
if (endereco == null) {
endereco = new Endereco();
}
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
public void salvar() {
if (cliente.getCodigo() == null) {
cliente.setEndereco(this.endereco);
new ClienteDAO().cadastrar(cliente, endereco);
this.clientes = new ClienteDAO().lstClientes();
new MensagemUtil().adicionarMensagemInfo("Cliente Cadastrado com sucesso");
} else {
new ClienteDAO().atualizar(cliente, endereco);
new MensagemUtil().adicionarMensagemInfo("Cliente atualizado com sucesso");
}
this.cliente = new Cliente();
this.endereco = new Endereco();
}
public List<Cliente> getClientes() {
ClienteDAO dao = new ClienteDAO();
if (clientes == null) {
dao.lstClientes();
}
return clientes;
}
public void excluir(Cliente cliente) {
new ClienteDAO().remover(cliente);
new MensagemUtil().adicionarMensagemInfo("Excluido com sucesso");
this.clientes = new ClienteDAO().lstClientes();
}
public Redirecao carregar(Cliente cliente) {
this.cliente = cliente;
this.endereco = cliente.getEndereco();
return new Redirecao("cliente");
}
public Redirecao formularioCadastro() {
return new Redirecao("cliente");
}
public Redirecao forumularioTabelaCliente() {
return new Redirecao("pesquisaCliente");
}
public void consultaCpf(FacesContext faces, UIComponent componente, Object objeto) throws ValidatorException {
String valor = objeto.toString();
Cliente cpf = new ClienteDAO().consultaCpf(cliente);
if(valor.equals(cpf.getCpf())) {
throw new ValidatorException(new FacesMessage("CPF já existe"));
}
}