Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Sou iniciante preciso muito de ajuda ÇÇ : Primefaces/hibernate/tomcat

$
0
0

@Paulo_J_Silva escreveu:

Pessoal, estou com um problema muito chato. Pesquisei muito e não consegui resolver.
É o seguinte, toda vez que eu carrego a pagina pela primeira vez.... ela carrega os dados exatamente como esta no banco de dados, entretanto caso alguma alteração tenha sido feita, não importa o jeito que eu tento atualizar a pagina e os dados carregados sempre são iguais a primeira vez que eu carreguei, já tentei desativar o cache do hibernate dou clear() na sessão e a única solução é quando eu reinicio o tomcat, entretanto minha aplicação não pode ficar com esse bug pois a alteração dos dados ocorre com muita frequência!

Segue a configuração do Hibernate!

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://xxxxxxx:3306/sfmsp-homo?zeroDateTimeBehavior=convertToNull</property>
<property name="connection.username">root</property>
<property name="connection.password">xxxxx</property>

<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>

<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>

<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>

<!-- Mapeamento das entidades -->
<mapping class="hagape.domain.tb_tipo_negocio" />
<mapping class="hagape.domain.tb_categoria_produto" />
<mapping class="hagape.domain.tb_produto" />
<mapping class="hagape.domain.tb_medida" />
<mapping class="hagape.domain.tb_estoque" />
<mapping class="hagape.domain.tb_estoque_produto" />
<mapping class="hagape.domain.tb_cidade" />
<mapping class="hagape.domain.tb_uf" />
<mapping class="hagape.domain.tb_unidade_medida" />

a Servlet:

<?xml version="1.0" encoding="UTF-8" ?>

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">





Hagape




<p:panel
header="Listagem das Categorias referente a tabela - 'tb_categoria_produto'">
<p:dataTable id="dataTableListagem"
emptyMessage="Nenhum registro encontrado." paginator="true"
value="#{categoriaProdutoBean.categorias}" var="categoria" rows="10">

			<f:facet name="footer">
				<p:commandButton value="Novo"
					actionListener="#{categoriaProdutoBean.refresh}"
					oncomplete="PF('dialogo').show();"
					update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem">
					<f:actionListener
						type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
				</p:commandButton>
			</f:facet>

			<p:column headerText="Nome" filterBy="#{categoria.txt_nome}"
				sortBy="#{categoria.txt_nome}">
				<h:outputText value="#{categoria.txt_nome}" />
			</p:column>

			<p:column headerText="Tipo de Negócio"
				sortBy="#{categoria.tipo_negocio.txt_tipo}"
				filterBy="#{categoria.tipo_negocio.txt_tipo}">
				<h:outputText value="#{categoria.tipo_negocio.txt_tipo}" />
			</p:column>

			<p:column headerText="Categoria Pai"
				filterBy="#{categoria.id_categoria_pai}">
				<h:outputText value="#{categoria.id_categoria_pai}" />
			</p:column>



			<p:column headerText="Situação" filterBy="#{categoria.situacao}"
				sortBy="#{categoria.situacao}">
				<h:outputText value="#{categoria.situacao}" />
			</p:column>

			<p:column headerText="Opções">

				<p:commandButton icon="ui-icon-pencil"
					oncomplete="PF('dialogo').show();"
					actionListener="#{categoriaProdutoBean.edita}"
					update=":mensagem :formCadastro:painelCadastro">
					<f:attribute name="categoriaSelecionada" value="#{categoria}" />
					<f:actionListener
						type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
				</p:commandButton>

				<p:commandButton icon="ui-icon-trash"
					actionListener="#{categoriaProdutoBean.excluir}"
					update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem">
					<p:confirm header="Confirmação"
						message="Voce deseja exluir essa 'Categoria'?"
						icon="ui-icon-alert" />
					<f:attribute name="categoriaSelecionada" value="#{categoria}" />
				</p:commandButton>
			</p:column>
		</p:dataTable>

		<p:confirmDialog global="true">
			<p:commandButton value="Sim" type="button"
				styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
			<p:commandButton value="Não" type="button"
				styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
		</p:confirmDialog>
	</p:panel>
</h:form>

<p:dialog header="Cadastro de Categorias" widgetVar="dialogo"
	draggable="false" resizable="false" modal="true" closable="false">
	<h:form id="formCadastro">
		<h:panelGrid id="painelCadastro" columns="2">

			<p:outputLabel for="nome" value="Nome:" />
			<p:inputText id="nome"
				value="#{categoriaProdutoBean.categoria.txt_nome}" maxlength="100"
				size="25" required="true"
				requiredMessage="O Campo 'Nome' é obrigatório!" />

			<p:outputLabel for="tipoNegocio" value="Tipo Negócio:" />
			<p:selectOneMenu id="tipoNegocio" filter="true"
				value="#{categoriaProdutoBean.categoria.tipo_negocio}"
				converter="omnifaces.SelectItemsConverter" required="true"
				requiredMessage="Campo 'Tipo Negócio' obrigatório!">
				<f:selectItem noSelectionOption="true"
					itemLabel="Selecione um 'Tipo Negócio'"
					itemValue="#{categoriaProdutoBean.negocios}" />
				<f:selectItems value="#{categoriaProdutoBean.negocios}"
					var="negocio"
					itemLabel="#{negocio.id_tipo_negocio} - #{negocio.txt_tipo}"
					itemValue="#{negocio}" />
			</p:selectOneMenu>

			<p:outputLabel for="categoriaPai" value="Categoria Pai:" />
			<p:selectOneMenu id="categoriaPai" filter="true"
				value="#{categoriaProdutoBean.categoria}"
				converter="omnifaces.SelectItemsConverter">
				<f:selectItem noSelectionOption="true"
					itemLabel="Selecione a 'Categoria Pai'"
					itemValue="#{categoriaProdutoBean.categorias}" />
				<f:selectItems value="#{categoriaProdutoBean.categorias}"
					var="categoriaP"
					itemLabel="#{categoriaP.id_categoria} - #{categoriaP.txt_nome}"
					itemValue="#{categoriaP}" />
			</p:selectOneMenu>

			<p:outputLabel for="ativo" value="Ativa:" />
			<p:selectOneRadio id="ativo"
				value="#{categoriaProdutoBean.categoria.bool_ativo}">
				<f:selectItem itemLabel="Ativa" itemValue="1" />
				<f:selectItem itemLabel="Inativa" itemValue="0" />
			</p:selectOneRadio>

			<p:outputLabel value="Observação:" />
			<p:inputTextarea
				value="#{categoriaProdutoBean.categoria.txt_observacao}" />
		</h:panelGrid>

		<h:panelGrid columns="2">
			<p:commandButton value="Salvar"
				actionListener="#{categoriaProdutoBean.salvar}"
				update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem" />

			<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide()" />
		</h:panelGrid>
	</h:form>
</p:dialog>


a classe DAO:

package hagape.dao;

import java.lang.reflect.ParameterizedType;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import br.com.drogaria.HibernateUtil;

public class GenericDAO {
private Class classe;

@SuppressWarnings("unchecked")
public GenericDAO() {
	this.classe = (Class<Entidade>) ((ParameterizedType) getClass().getGenericSuperclass())
			.getActualTypeArguments()[0];
}

public void salvar(Entidade entidade) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	sessao.clear();
	Transaction transacao = null;

	try {
		transacao = sessao.beginTransaction();
		sessao.save(entidade);
		transacao.commit();
	} catch (RuntimeException erro) {
		if (transacao != null) {
			transacao.rollback();
		}
		throw erro;
	} finally {
		sessao.close();
	}

}

public void merge(Entidade entidade) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	sessao.clear();
	Transaction transacao = null;

	try {
		transacao = sessao.beginTransaction();
		sessao.merge(entidade);
		transacao.commit();
	} catch (RuntimeException erro) {
		if (transacao != null) {
			transacao.rollback();
		}
		throw erro;
	} finally {
		sessao.close();
	}
}

public void excluir(Entidade entidade) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	sessao.clear();
	Transaction transacao = null;

	try {
		transacao = sessao.beginTransaction();
		sessao.delete(entidade);
		transacao.commit();
	} catch (RuntimeException erro) {
		if (transacao != null) {
			transacao.rollback();
		}
		throw erro;
	} finally {
		sessao.close();
	}

}

public void editar(Entidade entidade) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	sessao.clear();
	Transaction transacao = null;

	try {
		transacao = sessao.beginTransaction();
		sessao.update(entidade);
		transacao.commit();
	} catch (RuntimeException erro) {
		if (transacao != null) {
			transacao.rollback();
		}
		throw erro;
	} finally {
		sessao.close();
	}

}

@SuppressWarnings("unchecked")
public List<Entidade> listar() {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	sessao.clear();
	try {
		Criteria consulta = sessao.createCriteria(classe);
		List<Entidade> resultado = consulta.list();
		return resultado;
	} catch (RuntimeException erro) {
		throw erro;
	} finally {
		sessao.close();
	}
}

@SuppressWarnings("unchecked")
public List<Entidade> listar(String campoOrdenacao) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	sessao.clear();
	try {
		Criteria consulta = sessao.createCriteria(classe);
		consulta.addOrder(Order.asc(campoOrdenacao));
		List<Entidade> resultado = consulta.list();
		return resultado;
	} catch (RuntimeException erro) {
		throw erro;
	} finally {
		sessao.close();
	}
}

@SuppressWarnings("unchecked")
public Entidade buscar(Long codigo) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	sessao.clear();
	try {
		Criteria consulta = sessao.createCriteria(classe);
		consulta.add(Restrictions.idEq(codigo));
		Entidade resultado = (Entidade) consulta.uniqueResult();
		return resultado;
	} catch (RuntimeException erro) {
		throw erro;
	} finally {
		sessao.close();
	}
}

}

o pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
br.com.hagape
Hagape
0.0.1-SNAPSHOT
war

<!-- Codificação dos caracteres -->
<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<!-- Parâmetros de execução -->
<build>
	<!-- Nome do projeto empacotado -->
	<finalName>Hagape</finalName>

	<!-- Plugins -->
	<plugins>
		<!-- Compilador -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.3</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
			</configuration>
		</plugin>
	</plugins>
</build>

<!-- Repositorios -->
<repositories>
	<repository>
		<id>prime-repo</id>
		<name>PrimeFaces Maven Repository</name>
		<url>http://repository.primefaces.org</url>
		<layout>default</layout>
	</repository>
</repositories>

<!-- Dependencias -->
<dependencies>
	<dependency>
		<groupId>org.hibernate</groupId>
		<artifactId>hibernate-core</artifactId>
		<version>4.3.11.Final</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.36</version>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
	</dependency>
	<dependency>
		<groupId>org.glassfish</groupId>
		<artifactId>javax.faces</artifactId>
		<version>2.2.12</version>
	</dependency>
	<dependency>
		<groupId>org.primefaces.themes</groupId>
		<artifactId>all-themes</artifactId>
		<version>1.0.10</version>
	</dependency>
	<dependency>
		<groupId>org.primefaces</groupId>
		<artifactId>primefaces</artifactId>
		<version>6.0</version>
	</dependency>
	<dependency>
		<groupId>org.omnifaces</groupId>
		<artifactId>omnifaces</artifactId>
		<version>1.11</version>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
	</dependency>
	<dependency>
		<groupId>javax.enterprise</groupId>
		<artifactId>cdi-api</artifactId>
		<version>1.2</version>
	</dependency>
</dependencies>

e o web.xml:

<?xml version="1.0" encoding="UTF-8"?>
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
Hagape

javax.faces.PROJECT_STAGE
Development


Faces Servlet
javax.faces.webapp.FacesServlet
1


Faces Servlet
*.xhtml

a classe bean:

package hagape.bean;

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

import javax.annotation.PostConstruct;
import javax.faces.application.Application;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;

import org.omnifaces.util.Messages;

import hagape.dao.EstoqueDAO;
import hagape.dao.EstoqueProdutoDAO;
import hagape.dao.ProdutoDAO;
import hagape.domain.tb_estoque;
import hagape.domain.tb_estoque_produto;
import hagape.domain.tb_produto;

@SuppressWarnings("serial")
@ViewScoped
@ManagedBean
public class EstoqueProdutoBean implements Serializable {
private tb_estoque_produto estoqueProduto;
private List estoques;
private List produtos;
private List estoqueProdutos;

public tb_estoque_produto getEstoqueProduto() {
	return estoqueProduto;
}

public void setEstoqueProduto(tb_estoque_produto estoqueProduto) {
	this.estoqueProduto = estoqueProduto;
}

public List<tb_estoque> getEstoques() {
	return estoques;
}

public void setEstoques(List<tb_estoque> estoques) {
	this.estoques = estoques;
}

public List<tb_produto> getProdutos() {
	return produtos;
}

public void setProdutos(List<tb_produto> produtos) {
	this.produtos = produtos;
}

public List<tb_estoque_produto> getEstoqueProdutos() {
	return estoqueProdutos;
}

public void setEstoqueProdutos(List<tb_estoque_produto> estoqueProdutos) {
	this.estoqueProdutos = estoqueProdutos;
}

@PostConstruct
public void listar() {
	try {
		estoqueProduto = new tb_estoque_produto();
		ProdutoDAO produtoDAO = new ProdutoDAO();
		produtos = produtoDAO.listar("txt_nome");
		EstoqueDAO estoqueDAO = new EstoqueDAO();
		estoques = estoqueDAO.listar();
		EstoqueProdutoDAO estoqueProdutoDAO = new EstoqueProdutoDAO();
		estoqueProdutos = estoqueProdutoDAO.listar();
		FacesContext context = FacesContext.getCurrentInstance();
		Application application = context.getApplication();
		javax.faces.application.ViewHandler viewHandler = application.getViewHandler();
		UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
		context.setViewRoot(viewRoot);
		context.renderResponse();

	} catch (RuntimeException e) {
		e.printStackTrace();
		Messages.addGlobalError("Erro ao tentar carregar 'Lista'!");
	}
}

public void refresh() {
	try {
		estoqueProduto = new tb_estoque_produto();
		ProdutoDAO produtoDAO = new ProdutoDAO();
		produtos = produtoDAO.listar("txt_nome");
		EstoqueDAO estoqueDAO = new EstoqueDAO();
		estoques = estoqueDAO.listar();
		EstoqueProdutoDAO estoqueProdutoDAO = new EstoqueProdutoDAO();
		estoqueProdutos = new ArrayList<>();
		List<tb_estoque_produto> estoqueProdutos1 = estoqueProdutoDAO.listar();
		estoqueProdutos = estoqueProdutos1;
		FacesContext context = FacesContext.getCurrentInstance();
		Application application = context.getApplication();
		javax.faces.application.ViewHandler viewHandler = application.getViewHandler();
		UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
		context.setViewRoot(viewRoot);
		context.renderResponse();

	} catch (RuntimeException e) {
		e.printStackTrace();
		Messages.addGlobalError("Erro ao tentar carregar 'Lista'!");
	}
}

}

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>