ProductDao:
public class ProdutoDao implements IDao<Produto> {
@Override
public List<Produto> listar() {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
Query query = session.createQuery("from Produto pro");
List<Produto> produtos = query.list();
if (produtos.isEmpty() || produtos == null) {
return null;
} else {
return produtos;
}
} catch (Exception e) {
e.printStackTrace();
return new ArrayList<Produto>();
} finally {
session.close();
}
}
@Override
public void inserir(Produto t) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
transaction = session.beginTransaction();
session.save(t);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{ session.close(); }
}
@Override
public void alterar(Produto t) {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
session.saveOrUpdate(t);
session.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{ session.close(); }
}
@Override
public void deletar(Produto t) {
Session session = null;
try {
session = HibernateUtil.getSessionFactory().openSession();
Transaction beginTransaction = session.beginTransaction();
Query query = session.createQuery("delete from produto p where p.id = :id");
query.setParameter("id", t.getId());
query.executeUpdate();
beginTransaction.commit();
} catch (Exception e) {
} finally {
session.close();
}
}
}
IDao:
public interface IDao<T> {
public List<T> listar();
public void inserir(T t);
public void alterar(T t);
public void deletar(T t);
}
ProductBean:
public class ProdutoBean {
private Produto produto;
private List<Produto> produtos;
public ProdutoBean() {
produto = new Produto();
produtos = new ProdutoDao().listar();
}
public void inserir() {
ProdutoDao produtoDao = new ProdutoDao();
if (produto.getId() != null && produto.getId() > 0) {
produtoDao.alterar(produto);
} else {
produtoDao.inserir(produto);
}
produto = new Produto();
produtos = produtoDao.listar();
}
public void editar(Produto pro) {
this.produto = pro;
}
public void deletar(Produto pro) {
ProdutoDao produtoDao = new ProdutoDao();
produtoDao.deletar(pro);
produto = new Produto();
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public List<Produto> getProdutos() {
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
}
Registration Screen:
<f:view contentType="text/html">
<h:head>
<f:facet name="first">
<meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
<title>PrimeFaces</title>
</f:facet>
</h:head>
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="center">
<h:form id="frmCadastro">
<h:panelGrid id="grid" columns="3" cellpadding="5">
<p:outputLabel for="nome" value="Nome: "></p:outputLabel>
<p:inputText id="nome" value="#{produtoBean.produto.nome}" />
<p:message for="nome"/>
<p:outputLabel for="quantidade" value="Quantidade de Produto: "></p:outputLabel>
<p:spinner id="quantidade" min="10" max="20"
value="#{produtoBean.produto.qtd}" />
<p:message for="quantidade"/>
<p:outputLabel for="data_cad" value="Data de Cadastro: "></p:outputLabel>
<p:calendar id="data_cad" pattern="dd/MM/yyyy" mask="true"
pages="2" value="#{usuarioBean.usuario.dataCad}" />
<p:message for="data_cad"/>
</h:panelGrid>
<p:commandButton id="submitForm" value="Salvar" update="grid"
action="#{produtoBean.salvar()}"/>
<p:separator ></p:separator>
<p:dataTable var="p" value="#{produtoBean.produtos}" rows="3"
paginator="true">
<p:column headerText="Nome">
<h:outputText value="#{p.nome}"/>
</p:column>
<p:column headerText="Data de Cadastro">
<h:outputText value="#{p.dataCad}" />
</p:column>
<p:column headerText="Operações">
<p:commandButton value="Editar" action="#{produtoBean.alterar(p)}" update="@form"></p:commandButton>
<p:commandButton value="Deletar"
action="#{produtoBean.deletar(p)}" update="@form"></p:commandButton>
</p:column>
</p:dataTable>
</h:form>
</p:layoutUnit>
</p:layout>
</h:body>
</f:view>