DAOProduto.java import javax.ejb.local; @Local public interface DAOProduto { public static void salvarproduto(produto produto); public static void excluirproduto(produto produto); public static List<Produto> listar(); A implementação da nossa interface DAOProduto será nosso Stateless Session Beans. import javax.persistence.entitymanager; import javax.persistence.query; public class DAOProdutoImpl{ private static EntityManager entitymanager; static{ entitymanager = JPAUtil.getEntityManager(); public static void salvarproduto(produto produto) { entitymanager.persist(produto); public static void excluirproduto(produto produto) { entitymanager.remove(produto); public static List<Produto> listar() {
Query query = entitymanager.createquery("select p from Produto p"); return query.getresultlist(); Lembrado que poderíamos utilizar injeção de dependência e não utilizar nosso JPAUtil criado anteriormente. Nesse caso nosso DAOProduto seria se assemelharia a classe abaixo: import javax.ejb.local; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.persistenceunit; @Stateless @Local(DAOProduto.class) public class DAOProdutoImpl implements DAOProduto { @PersistenceUnit(unitName = "revisao") private static EntityManagerFactory entitymanagerfactory; private static EntityManager entitymanager; public static void salvarproduto(produto produto) { entitymanager = entitymanagerfactory.createentitymanager(); entitymanager.persist(produto); public static void excluirproduto(produto produto) { entitymanager = entitymanagerfactory.createentitymanager(); entitymanager.remove(produto); public static List<Produto> listar() {
entitymanager = entitymanagerfactory.createentitymanager(); Query query = entitymanager.createquery("select p from Produto p"); return query.getresultlist(); Agora definiremos nosso Managed Bean que será chamado ProdutoBean. import java.util.arraylist; import javax.faces.application.facesmessage; import javax.faces.bean.managedbean; import javax.faces.bean.sessionscoped; import javax.faces.context.facescontext; import javax.faces.model.selectitem; @ManagedBean(name="produto") @SessionScoped public class ProdutoBean { private Produto produto; private Long idcategoria; private List<SelectItem> categorias; private List<Produto> produtos; @EJB DAOProdutoImpl dao; public ProdutoBean(){ produto = new Produto(); produtos = DAOProdutoImpl.listar(); this.categorias = new ArrayList<SelectItem>(); this.categorias.add(new SelectItem(null, "Selecione")); ArrayList<Categoria> cats = new ArrayList<Categoria>(); cats.addall(jpautil.getentitymanager().createquery("select c from Categoria c").getresultlist());
for(categoria c:cats){ this.categorias.add(new SelectItem(c.getId(), c.getdescricao())); public String salvarproduto(){ produto.setcategoria(jpautil.getentitymanager().find(categoria.class, idcategoria)); DAOProdutoImpl.salvarProduto(produto); FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_INFO, "Produto cadastrado com sucesso!!", null); FacesContext.getCurrentInstance().addMessage(null, fm); idcategoria = null; produto = new Produto(); produtos = DAOProdutoImpl.listar(); return "produtos"; public String excluirproduto(){ DAOProdutoImpl.excluirProduto(produto); FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_INFO, "Produto removido com sucesso!!", null); FacesContext.getCurrentInstance().addMessage(null, fm); produto = new Produto(); produtos = new ArrayList<Produto>(); produtos = DAOProdutoImpl.listar(); return "produtos"; public Produto getproduto() { return produto; public void setproduto(produto produto) { this.produto = produto; public Long getidcategoria() { return idcategoria; public void setidcategoria(long idcategoria) { this.idcategoria = idcategoria;
public List<SelectItem> getcategorias() { return categorias; public void setcategorias(list<selectitem> categorias) { this.categorias = categorias; public List<Produto> getprodutos() { return produtos; public void setprodutos(list<produto> produtos) { this.produtos = produtos; Para finalizar temos nossa página produtos.xhtml <!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:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.prime.com.tr/ui"> <h:head> <title>manutenção no cadastro de produtos</title> </h:head> <h:body> <h:form> <p:panel header="produto"> <h:panelgrid columns="2"> <h:outputlabel for="descricao" value="descrição:"/> <p:inputtext id="descricao" value="#{produto.produto.descricao"/> <h:outputlabel for="valor" value="valor:"/> <p:inputtext id="valor" value="#{produto.produto.preco"/> <h:outputlabel for="categoria" value="categoria:"/> <h:selectonemenu value="#{produto.idcategoria" id="categoria"> <f:selectitems value="#{produto.categorias"/>
</h:selectonemenu> <p:commandbutton action="#{produto.salvarproduto" update="messages,tabela" value="cadastrar"/> </h:panelgrid> <p:messages id="messages"/> <p:datatable id="tabela" value="#{produto.produtos" var="p"> <h:outputtext value="código" /> <h:outputtext value="#{p.id" /> <h:outputtext value="descrição" /> <h:outputtext value="#{p.descricao" /> <h:outputtext value="valor" /> <h:outputtext value="#{p.preco" /> <h:outputtext value="categoria" /> <h:outputtext value="#{p.categoria.descricao" /> <p:commandbutton ajax="false" value="excluir" update="messages" action="#{produto.excluirproduto"> <f:setpropertyactionlistener value="#{p" target="#{produto.produto" /> </p:commandbutton> </p:datatable> </p:panel>
</h:form> </h:body> </html>