Aee galera Também quero a resposta pra esse problema
Uso hibernate+JSF(Primefaces,RichFaces)
Minha aplicação já ta bem grandinha com umas 100 tabelas
Em todos os métodos testados como por exemplo carregamento de listas que carregamos elas direto do get do dataModel (nao sei se isso e errado mas estou usando assim ) as telas sempre fazem duas vezes as consultas no banco tornando a navegação lenta vou deixa aqui umas dos get/s de dataModel que uso pra carrega essas lista.
E mesmo em uma simples ação de redirecionamento de pagina (Tipo click em um botao e ir pra outra Pagina ) em que não vai ao Java nem faz consulta no banco a uma certa demora pra carrega esses paginas
vou posta como estão configurados meu Web.xml e também dos faces-navigation.xml, faces-managed-beans.xml e por fim o faces-config.xml so que desse serão apenas partes porque estão muito grandes
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="">
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://localhost:5432/banco</property>
<property name="connection.username">postgres</property>
<property name="connection.password">123</property>
<!--<property name="hibernate.format_sql">true</property>-->
<!--<property name="hibernate.show_sql">true</property>-->
<property name="hibernate.hbm2ddl.auto">none</property>
<property name="hibernate.connection.autocommit">false</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.max_size">10</property>
<property name="c3p0.max_statements">50</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.timeout">1800</property>
<mapping class="br.com.sisconf.modelo.vo.Usuario"/>
<mapping class="br.com.sisconf.modelo.vo.Menu"/>
<mapping class="br.com.sisconf.modelo.vo.Usuario_Menu"/>
<mapping class="br.com.sisconf.modelo.vo.Uf"/>
<mapping class="br.com.sisconf.modelo.vo.Empresa"/>
<mapping class="br.com.sisconf.modelo.vo.Cliente_Fornecedor"/>
<mapping class="br.com.sisconf.modelo.vo.UsuarioTabelaPreco"/>
<mapping class="br.com.sisconf.modelo.vo.GrupoProduto"/>
<mapping class="br.com.sisconf.modelo.vo.Produto"/>
<mapping class="br.com.sisconf.modelo.vo.Unidade"/>
<mapping class="br.com.sisconf.modelo.vo.Tamanho"/>
<mapping class="br.com.sisconf.modelo.vo.FmRecebimento"/>
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>NOME APAGADO</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>true </param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml, /WEB-INF/faces-navigation.xml, /WEB-INF/faces-managed-beans.xml</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<context-param>
<param-name>facelets.SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>
br.com.sisconf.util.session.MySessionListener
</listener-class>
</listener>
<filter>
<filter-name>SessionTimeoutFilter</filter-name>
<filter-class>
br.com.sisconf.util.session.SessionTimeoutFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>SessionTimeoutFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<session-config>
<!-- 30 MINUTOS -->
<session-timeout>30</session-timeout>
</session-config>
</web-app>
faces-navigation.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
<!-- Login -->
<navigation-rule>
<from-view-id>/pages/login/login.xhtml</from-view-id>
<navigation-case>
<display-name>principal</display-name>
<from-outcome>success</from-outcome>
<to-view-id>/pages/modulo/aplicacao.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/pages/login/login.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>*</from-view-id>
<!--Menu Cadastro -->
<navigation-case>
<display-name>Natureza Operacao</display-name>
<from-outcome>menuNaturezaOperacao</from-outcome>
<to-view-id>/pages/naturezaOperacao/naturezaOperacaoLista.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<navigation-rule>
<from-view-id>/pages/usoConsumo/usoConsumoLista.xhtml</from-view-id>
<navigation-case>
<display-name>UsoConsumo</display-name>
<from-outcome>doNovoUsoConsumo</from-outcome>
<to-view-id>/pages/usoConsumo/usoConsumo.jsf</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/usoConsumo/usoConsumo.xhtml</from-view-id>
<navigation-case>
<display-name>Mobilizado</display-name>
<from-outcome>doListaUsoConsumo</from-outcome>
<to-view-id>/pages/usoConsumo/usoConsumoLista.jsf</to-view-id>
</navigation-case>
<navigation-case>
<display-name>Mobilizado</display-name>
<from-outcome>success</from-outcome>
<to-view-id>/pages/usoConsumo/usoConsumo.jsf</to-view-id>
</navigation-case>
</navigation-rule>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
<!-- <lifecycle> -->
<!-- <phase-listener>br.com.sisconf.util.ControlPhaseListener</phase-listener> -->
<!-- </lifecycle> -->
<validator>
<validator-id>validadorEmail</validator-id>
<validator-class>br.com.sisconf.util.validator.EmailValidator</validator-class>
</validator>
<validator>
<validator-id>validadorTel</validator-id>
<validator-class>br.com.sisconf.util.validator.TelValidador</validator-class>
</validator>
<validator>
<validator-id>validadorCpf</validator-id>
<validator-class>br.com.sisconf.util.validator.CpfValidador</validator-class>
</validator>
<validator>
<validator-id>validadorData</validator-id>
<validator-class>br.com.sisconf.util.validator.DataValidador</validator-class>
</validator>
<validator>
<validator-id>validadorDia</validator-id>
<validator-class>br.com.sisconf.util.validator.DiaValidador</validator-class>
</validator>
<validator>
<validator-id>validatorCnpjValidator</validator-id>
<validator-class>br.com.sisconf.util.validator.CnpjValidador</validator-class>
</validator>
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
<message-bundle>messages</message-bundle>
<locale-config>
<default-locale>pt_BR</default-locale>
<supported-locale>pt_BR</supported-locale>
<supported-locale>en_US</supported-locale>
</locale-config>
<!-- <resource-bundle>
<base-name>messages</base-name>
<var>msgs</var>
</resource-bundle>
<locale-config>
<default-locale>pt_BR</default-locale>
<supported-locale>pt_BR</supported-locale>
<supported-locale>en_US</supported-locale>
</locale-config>
<message-bundle>messages</message-bundle>-->
</application>
</faces-config>
faces-managed-beans.xml
<managed-bean>
<managed-bean-name>relatorioAgrupFc</managed-bean-name>
<managed-bean-class>br.com.sisconf.relatorio.GerarRelAgrupamentoPedido</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>relatorioEstoqueProdutoFc</managed-bean-name>
<managed-bean-class>br.com.sisconf.relatorio.GerarRelEstoqueProduto</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>relatorioPedidoFc</managed-bean-name>
<managed-bean-class>br.com.sisconf.relatorio.GerarRelPedido</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>relatorioComissaoFc</managed-bean-name>
<managed-bean-class>br.com.sisconf.relatorio.GerarRelComissao</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>relatorioGrupoProdutoFc</managed-bean-name>
<managed-bean-class>br.com.sisconf.relatorio.GerarRelGrupoProduto</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>relatorioContasPagarFc</managed-bean-name>
<managed-bean-class>br.com.sisconf.relatorio.GerarRelContasPagar</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
[color=red]E e assim que carrego as Lista direto do get no DataModel isso no Facade a lista chama esse método so que todo consulta e feita duas vezes [/color]
public DataModel getDataModelListaPedidoPopup() throws Exception {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
HttpSession session = request.getSession();
Usuario usuario = (Usuario) session.getAttribute("usuario");
pedidoBean = new PedidoBean();
int totalListPedidos = pedidoBean.count(pedidoFiltro,usuario);
pedidoBean = new PedidoBean();
pedidos = pedidoBean.listByCriteriaDemanda( getDataTableListaPedidoPopup().getFirst(),
( getDataTableListaPedidoPopup().getRows() != 0 ? getDataTableListaPedidoPopup().getRows() : 10),
pedidoFiltro,
usuario);
if (pedidos != null && pedidos.size() > 0 ) {
dataModelListaPedidoPopup = new PagedDataModel(pedidos, totalListPedidos);
} else {
dataModelListaPedidoPopup = null;
}
return dataModelListaPedidoPopup;
}