Tudo sobre Tecnologia da Informação Java, hibernate, Springs, C++, C#, CMMI, CMM, COBIT, PHP, CMS, Internet e muito mais.
sábado, 17 de novembro de 2012
Arquivo ClienteDaoImpl
Nome do arquivo ClienteDaoImpl (ClienteDaoImpl.java)
package daos;
import br.com.cliente.models.Cliente;
import br.com.cliente.utility.DaoGenericoImpl;
import br.com.cliente.utility.HibernateUtility;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Criteria;
public class ClienteDaoImpl extends DaoGenericoImpl < Cliente , Long > implements ClienteDao {
@Override
public List consultar() {
List lista = new ArrayList();
Criteria crit = HibernateUtility.getSession().createCriteria(Cliente.class);
lista = (List) crit.list();
return lista;
}
}
Arquivo ClienteDao
Nome do arquivo ClienteDao (ClienteDao.java)
package daos;
import br.com.cliente.models.Cliente;
import br.com.cliente.utility.DaoGenerico;
import java.util.List;
public interface ClienteDao extends DaoGenerico <Cliente, Long> {
public List consultar();
}
Arquivo HibernateUtility
Nome do arquivo HibernateUtility (HibernateUtility.java)
package br.com.cliente.utility;
import br.com.cliente.models.Cliente;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateUtility {
private static final SessionFactory factory;
private static final ThreadLocal sessionThread = new ThreadLocal();
private static final ThreadLocal transactionThread = new ThreadLocal();
public static Session getSession() {
Session session = (Session) sessionThread.get();
if ((session == null) || (!(session.isOpen()))) {
session = factory.openSession();
sessionThread.set(session);
}
return ((Session) sessionThread.get());
}
public static void closeSession() {
Session session = (Session) sessionThread.get();
if ((session != null) && (session.isOpen())) {
sessionThread.set(null);
session.close();
}
}
public static void beginTransaction() {
Transaction transaction = getSession().beginTransaction();
transactionThread.set(transaction);
}
public static void commitTransaction() {
Transaction transaction = (Transaction) transactionThread.get();
if ((transaction != null) && (!(transaction.wasCommitted())) && (!(transaction.wasRolledBack()))) {
transaction.commit();
transactionThread.set(null);
}
}
public static void rollbackTransaction() {
Transaction transaction = (Transaction) transactionThread.get();
if ((transaction != null) && (!(transaction.wasCommitted())) && (!(transaction.wasRolledBack()))) {
transaction.rollback();
transactionThread.set(null);
}
}
static {
try {
factory = new Configuration()
// /***MYSQL***/
.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect") // tipo de dialeto do banco
.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver") // driver do banco
.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/cliente") // endereço do banco de dados
.setProperty("hibernate.connection.username", "root")
.setProperty("hibernate.connection.password", "08515453")
.setProperty("hibernate.hbm2ddl.auto", "update")
.setProperty("hibernate.c3p0.max_size", "10")
.setProperty("hibernate.c3p0.min_size", "2")
.setProperty("hibernate.c3p0.timeout", "5000")
.setProperty("hibernate.c3p0.max_statements", "10")
.setProperty("hibernate.c3p0.idle_test_period", "3000")
.setProperty("hibernate.c3p0.acquire_increment", "2")
.setProperty("show_sql", "true")
.setProperty("use_outer_join", "true")
.setProperty("hibernate.generate_statistics", "true")
.setProperty("hibernate.use_sql_comments", "true")
.setProperty("hibernate.format_sql", "true")
//CADASTROS abaixo coloque todas classes que deseja ser modelo para criação do banco de dados
.addAnnotatedClass(Cliente.class)
//MOVIMENTOS
.buildSessionFactory();
} catch (RuntimeException e) {
e.printStackTrace();
throw e;
}
}
public static void main(String [] args) {
}
}
Arquivo DaoGenericoImpl
Nome do arquivo DaoGenericoImpl( DaoGenericoImpl.java)
package br.com.cliente.utility;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.LockOptions;
import org.hibernate.criterion.Restrictions;
public class DaoGenericoImpl<T, ID extends Serializable> implements DaoGenerico<T, ID> {
private final Class<T> oClass;
public DaoGenericoImpl() {
this.oClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@Override
public Class<T> getObjectClass() {
return this.oClass;
}
@Override
public T save(T objeto) {
try {
Object obj = null;
HibernateUtility.beginTransaction();
obj = HibernateUtility.getSession().merge(objeto);
HibernateUtility.commitTransaction();
HibernateUtility.closeSession();
return (T) obj;
} catch (HibernateException hibernateException) {
cancel();
throw hibernateException;
}
}
@Override
public void delete(T objeto) {
try {
HibernateUtility.beginTransaction();
HibernateUtility.getSession().delete(objeto);
HibernateUtility.commitTransaction();
HibernateUtility.closeSession();
} catch (HibernateException hibernateException) {
cancel();
throw hibernateException;
}
}
@Override
public void deleteItem(T objeto) {
try {
HibernateUtility.beginTransaction();
HibernateUtility.getSession().delete(objeto);
} catch (HibernateException hibernateException) {
cancel();
throw hibernateException;
}
}
@Override
public List<T> list() {
try {
List list = HibernateUtility.getSession().createCriteria(oClass).list();
//HibernateUtility.closeSession();
return (List<T>) list;
} catch (HibernateException hibernateException) {
cancel();
throw hibernateException;
}
}
@Override
public T getById(Serializable id) {
try {
return (T) HibernateUtility.getSession().get(oClass, id);
} catch (HibernateException hibernateException) {
cancel();
throw hibernateException;
}
}
@Override
public T getById(Serializable id, boolean lock) {
try {
if (lock) {
return (T) HibernateUtility.getSession().get(oClass, id, LockOptions.UPGRADE);
} else {
return (T) HibernateUtility.getSession().get(oClass, id);
}
} catch (HibernateException hibernateException) {
cancel();
throw hibernateException;
}
}
@Override
public List<T> listCriterio(String subClazz, Map<String, Object> filtrosConsulta, int tipoConsulta) {
List<T> lista = new ArrayList<T>();
Set entradas = filtrosConsulta.entrySet();
try {
Criteria crit = HibernateUtility.getSession().createCriteria(oClass);
if (subClazz == null) {
for (Iterator it = entradas.iterator(); it.hasNext();) {
Entry object = (Entry) it.next();
if (object.getValue() instanceof Enum) {
crit.add(Restrictions.eq(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 0) {
crit.add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
} else if (tipoConsulta == 1) {
crit.add(Restrictions.eq(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 2) {
crit.add(Restrictions.gt(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 3) {
crit.add(Restrictions.ge(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 4) {
crit.add(Restrictions.lt(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 5) {
crit.add(Restrictions.le(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 2) {
crit.add(Restrictions.ne(object.getKey().toString(), object.getValue()));
}
}
} else {
for (Iterator it = entradas.iterator(); it.hasNext();) {
Entry object = (Entry) it.next();
//crit.createCriteria(subClazz).add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
if (object.getValue() instanceof Enum) {
} else if (tipoConsulta == 0) {
crit.createCriteria(subClazz).add(Restrictions.ilike(object.getKey().toString(), "%" + object.getValue() + "%"));
} else if (tipoConsulta == 1) {
crit.createCriteria(subClazz).add(Restrictions.eq(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 2) {
crit.createCriteria(subClazz).add(Restrictions.gt(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 3) {
crit.createCriteria(subClazz).add(Restrictions.ge(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 4) {
crit.createCriteria(subClazz).add(Restrictions.lt(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 5) {
crit.createCriteria(subClazz).add(Restrictions.le(object.getKey().toString(), object.getValue()));
} else if (tipoConsulta == 2) {
crit.createCriteria(subClazz).add(Restrictions.ne(object.getKey().toString(), object.getValue()));
}
}
}
crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
crit.setMaxResults(20);
lista = (List<T>) crit.list();
//HibernateUtility.closeSession();
return lista;
} catch (HibernateException hibernateException) {
cancel();
throw hibernateException;
}
}
@Override
public List<T> consultaHQL(String consulta) {
return (List<T>) HibernateUtility.getSession().createQuery(consulta).list();
}
@Override
public void cancel() {
HibernateUtility.rollbackTransaction();
HibernateUtility.closeSession();
}
}
Arquivo DaoGenerico
Nome do arquivo DaoGenerico (DaoGenerico.java)
package br.com.cliente.utility;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
public interface DaoGenerico<T, ID extends Serializable> {
public Class<T> getObjectClass();
public T save(T objeto);
public void delete(T objeto);
public void deleteItem(T objeto);
public List<T> list();
public List<T> listCriterio(String subClazz, Map<String, Object> filtrosConsulta, int tipoConsulta);
public T getById(Serializable id);
public T getById(Serializable id, boolean lock);
public List<T> consultaHQL(String consulta);
public void cancel();
}
Arquivo Cliente
Nome do Arquivo classe java (Cliente.java)
package br.com.cliente.models;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Cliente implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long idCliente;
@Column(name="NOME", length=80)
private String Nome;
@Column(name="EMAIL", length=80)
private String email;
public Long getIdCliente() {
return idCliente;
}
public void setIdCliente(Long idCliente) {
this.idCliente = idCliente;
}
public String getNome() {
return Nome;
}
public void setNome(String Nome) {
this.Nome = Nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Arquivo ClienteBean
Arquivo classe Java (ClienteBean.java)
package br.com.cliente.controller;
import br.com.cliente.models.Cliente;
import daos.ClienteDao;
import daos.ClienteDaoImpl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
@ManagedBean
@SessionScoped
public class ClienteBean implements Serializable {
private Cliente cliente = new Cliente();
private List<Cliente> clientes = new ArrayList<Cliente>();
private ClienteDao dao = new ClienteDaoImpl();
public ClienteBean() {
clientes = dao.consultar(); // busca todos registros do banco e popula a lista de clientes
}
public void salvar(ActionEvent event) {
dao.save(cliente); // salvando no banco de dados
cliente = new Cliente(); // criando um novo objeto para caso for inserir novamente
clientes = dao.consultar();// busca os dados no banco após salvar para apresentar na tabela
}
public void editar() {
cliente = dao.getById(cliente.getIdCliente()); // busca no banco de dados qual registro que vai ser alterado.
}
public void excluir() {
dao.delete(cliente); // deleta do banco o cliente que está no objeto cliente, que foi setado na view.
clientes = dao.consultar();// busca os dados no banco após excluir para apresentar na tabela
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public List<Cliente> getClientes() {
return clientes;
}
public void setClientes(List<Cliente> clientes) {
this.clientes = clientes;
}
}
Arquivo Cliente.xhtml
Nome do arquivo Cliente.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:p="http://primefaces.prime.com.tr/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Cliente</title>
</h:head>
<h:body>
<h:form id="form">
<p:panel header="CLIENTE">
<p:messages />
<h:panelGrid columns="2">
<h:outputLabel value="NOME:" for="nome" />
<p:inputText id="nome" label="nome" value="#{clienteBean.cliente.nome}" maxlength="40" size="40" />
<h:outputLabel value="EMAIL:" for="email"/>
<p:inputText id="email" label="email" value="#{clienteBean.cliente.email}" maxlength="40" size="40"/>
<p:commandButton id="btnSalvar" value="SALVAR" actionListener="#{clienteBean.salvar}" update="form" />
</h:panelGrid>
<!--criando minha tabela, incluido no value a lista de cliente, definino um variavel de acesso para cada registro, para acessar um unico registro-->
<p:dataTable id="tabela" value="#{clienteBean.clientes}" var="cli" emptyMessage="Nenhum registro incluido." paginator="true" rows="10">
<!-- Definindo o cabeçalho da Tabela-->
<f:facet name="header">
Lista de Clientes
</f:facet>
<!--Criando uma coluna para receber um determinando dado que tem em um objeto da nossa lista, nesse caso nome de cliente-->
<p:column headerText="NOME" style="text-align: center">
<!--Aqui onde acesso o objeto cli.nome e apresentamos na tabela, e assim com os seguintes-->
<h:outputText value="#{cli.nome}" />
</p:column>
<p:column headerText="E-MAIL" style="text-align: center">
<h:outputText value="#{cli.email}" />
</p:column>
<p:column headerText="ALTERAR - EXCLUIR" style="text-align: center">
<!--Abaixo o botão editar com uma Action do nosso metodo editar que criamos no Bean-->
<p:commandButton action="#{clienteBean.editar}" value="EDITAR" title="Editar" ajax="false" >
<!-- Abaixo temos o setPropertyActionListener que é utilizado para pegar o objeto cli e setar no objeto cliente la no nosso bean, para editarmos-->
<f:setPropertyActionListener value="#{cli}" target="#{clienteBean.cliente}" />
</p:commandButton>
<!-- Abaixo temos o botão excluir com a propriedade onclick contendo o nome do modal e acessando um método de abri-lo que é o show, também existe o hide que é para feixa-lo.-->
<p:commandButton value="EXCLUIR" title="Excluir" onclick="confirmation.show()" style="margin-left: 5px" >
<!-- Abaixo temos o setPropertyActionListener que é utilizado para pegar o objeto cli e setar no objeto cliente la no nosso bean, para posteriomente excluirmos-->
<f:setPropertyActionListener value="#{cli}" target="#{clienteBean.cliente}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:panel>
</h:form>
<!-- Abaixo temos um modal de confirmação de exclusão repare que ele é fora do form principal, pois se colocarmos dentro podemos ter alguns problemas com isso.-->
<h:form id="dlg">
<p:confirmDialog message="Deseja realmente excluir este registro?" hideEffect="explode" header="Aviso" severity="alert" widgetVar="confirmation" modal="true">
<!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->
<p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide();" actionListener="#{clienteBean.excluir}" process="@form" update="form:tabela" />
<!--caso seja não somente fecha o modal-->
<p:commandButton id="btnNao" value="Não" onclick="confirmation.hide();" type="button"/>
</p:confirmDialog>
</h:form>
</h:body>
</html>
Assinar:
Postagens (Atom)