| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 10:17:27
|
androdana
Thread.start()
Membro desde: 26/05/2009 20:45:07
Mensagens: 47
Offline
|
Caros colegas estou estou desenvolvendo um projeto um pouco mais complexo do que o normal e criei algumas classes bases, porém na parte de consulta estou percebendo uma demora excessiva do Hibernate para consultar o banco (cerca de 5000 linhas) e gostaria de saber se está faltando alguma configuraçào ou é assim mesmo.
public List<T> listaCompleta() {
Query q=getEntityManager().createQuery("SELECT e FROM fatd e");
return q.getResultList();
}
O Hibernate faz milhoes de consultas ao banco e depois alguns minutos é que ele retorna...
aguardo alguma sugestão,,,
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 10:51:17
|
rodrigo_gomes
GUJ Master
![[Avatar]](/images/avatar/d30960ce77e83d896503d43ba249caf7.jpg)
Membro desde: 25/11/2003 15:45:21
Mensagens: 1088
Localização: São Paulo
Offline
|
Sua entidade tem mtos relacionamentos?
Se tiver e você não precisar deles para a maioria das coisas, coloque-os como lazy.
[]´s
|
rodrigo de paiva gomes
http://twitter.com/rod_gomes |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 10:52:34
|
zoren
GUJ Master
![[Avatar]](/images/avatar/9efbafef9f85fd9caa789941a4cdf821.jpg)
Membro desde: 30/06/2008 08:32:33
Mensagens: 1007
Offline
|
talves seja algum problema com seu mapeamento
os atributos estão como lazy??
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 11:22:56
|
ciczan
JavaGuru
![[Avatar]](/images/avatar/4fb8a7a22a82c80f2c26fe6c1e0dcbb3.png)
Membro desde: 22/12/2004 12:57:21
Mensagens: 227
Localização: Curitiba -PR
Offline
|
Para verificar desempenho é bom desligar o log SQL. Isso muda bastante as coisas.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 11:47:41
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
ola androdana
se voce esta apenas testando essa query, é possivel que voce esteja vendo tambem ai o log de bootstrap de uma sessionfactory. depois que o hibernate "sobe", tudo vai ser mais rapido. experimente rodar mais de uma query durante a mesma execucacao de jvm.
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 12:25:07
|
androdana
Thread.start()
Membro desde: 26/05/2009 20:45:07
Mensagens: 47
Offline
|
Amigos, de ante mão gostaria de agradecer pelas respostas, mas vamos lá:
Minhas entidades têm muitos relacionamentos e nào defini o fetch delas, deixando a critério standart
Eu estou com o log ativado, mas a quantidade de query feitas é muito.... grande... independente dele...
Nào estou confundindo com as informações de quando o hibernate levanta, pois estou usando Spring também e ele levanta depois, e ainda eu estou limpando os logs após o levantamento e deixando apenas para a consulta...
Acredito que talvez tenha alguma configuração, porém acho muito lento...
Aguardo
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 12:53:49
|
dwduncan
JavaTeenager
![[Avatar]](/images/avatar/47faaa86a0f77d1d93bdc57e86cfd6c6.png)
Membro desde: 03/06/2007 13:44:07
Mensagens: 159
Localização: Pirassununga SP
Offline
|
Poste seu xml de configuração do spring, pelo menos a parte que configura a persistência.
|
"Os que não querem raciocinar são fanáticos,
os que não sabem raciocinar são tolos e,
os que não ousam raciocinar são escravos "
Carlos Drummond de Andrade |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 13:03:22
|
ciczan
JavaGuru
![[Avatar]](/images/avatar/4fb8a7a22a82c80f2c26fe6c1e0dcbb3.png)
Membro desde: 22/12/2004 12:57:21
Mensagens: 227
Localização: Curitiba -PR
Offline
|
Seria util colocar o mapeamento do bean tb.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 13:05:58
|
androdana
Thread.start()
Membro desde: 26/05/2009 20:45:07
Mensagens: 47
Offline
|
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns si="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd
http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"
default-autowire="byName"
default-dependency-check="none"
default-lazy-init="true">
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven />
<context:annotation-config/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/sucoiteste" />
<property name="username" value="root" />
<property name="password" value="add" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="NovoSucoiPU" />
</bean>
<bean name="alunos" class="intraer.afa.model.Alunos" scope="prototype"/>
<bean name="daoAlunos" class="intraer.afa.model.dao.impl.DaoAlunosImpl"/>
<!--<bean name="cadastroAnterior" class="intraer.afa.model.Alunos" scope="prototype"/>-->
<bean name="cadastro" class="intraer.afa.model.Cadastro" scope="session"/>
<bean name="daoCadastro" class="intraer.afa.model.dao.impl.DaoCadastroImpl"/>
<bean name="dadosComplementaresAluno" class="intraer.afa.model.DadosComplementaresAluno" scope="prototype"/>
<bean name="dadosComplementaresEfetivo" class="intraer.afa.model.DadosComplementaresEfetivo" scope="prototype"/>
<bean name="emergencia" class="intraer.afa.model.Emergencia" scope="prototype"/>
<bean name="endereco" class="intraer.afa.model.Endereco" scope="prototype"/>
<bean name="entidade" class="intraer.afa.model.Entidade" scope="prototype"/>
<bean name="parente" class="intraer.afa.model.Parente" scope="prototype"/>
<bean name="util" class="intraer.afa.model.Util" scope="prototype"/>
<bean name="nacionalidade" class="intraer.afa.model.Nacionalidade" scope="prototype"/>
<bean name="daoNacionalidades" class="intraer.afa.model.dao.impl.DaoNacionalidadesImpl"/>
<bean name="turma" class="intraer.afa.model.Turma" scope="prototype"/>
<bean name="daoTurma" class="intraer.afa.model.dao.impl.DaoTurmaImpl"/>
<bean name="turmaAula" class="intraer.afa.model.TurmaAula" scope="prototype"/>
<bean name="daoTurmaAula" class="intraer.afa.model.dao.impl.DaoTurmaAulaImpl"/>
<bean name="veiculo" class="intraer.afa.model.Veiculo" scope="prototype"/>
<bean name="daoVeiculo" class="intraer.afa.model.dao.impl.DaoVeiculoImpl"/>
<bean name="punicao" class="ccaer.punicao" scope="prototype"/>
<bean name="daoPunicao" class="dao.DaoPunicaoImpl"/>
<bean name="fobs" class="ccaer.fobs" scope="prototype">
<property name="observadorCadete" ref="alunos"/>
<property name="observadorOficial" ref="cadastro"/>
<property name="turmaCadete" ref="turma"/>
<property name="cadastrador" ref="cadastro"/>
</bean>
<bean name="daoFobs" class="dao.DaoFobsImpl"/>
<bean name="fatd" class="ccaer.fatd" scope="prototype">
<property name="fob" ref="fobs"/>
<property name="cadastrador" ref="cadastro"/>
<property name="codautoridade" ref="cadastro"/>
<property name="cmtccaer" ref="cadastro"/>
<property name="codofaudiencia" ref="cadastro"/>
</bean>
<bean name="daoFatd" class="dao.DaoFatdImpl"/>
<bean name="alunosProvider" class="provider.AlunosProvider"/>
<bean name="cadastroProvider" class="provider.CadastroProvider"/>
<bean name="fatdProvider" class="provider.FatdProvider"/>
</beans>
Este é o xml do spring completo conforme solicitado...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 14:01:19
|
rodrigo_gomes
GUJ Master
![[Avatar]](/images/avatar/d30960ce77e83d896503d43ba249caf7.jpg)
Membro desde: 25/11/2003 15:45:21
Mensagens: 1088
Localização: São Paulo
Offline
|
Coloque também o mapeamento de sua entidade que ta com problema de lentidão (não esqueça de usar as tags "code" para facilitar a visualização do código)
Você pode fazer outro teste: coloque lazy como "true" e coloque o fetch para "join" e veja o que acontece.
|
rodrigo de paiva gomes
http://twitter.com/rod_gomes |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 14:23:53
|
dwduncan
JavaTeenager
![[Avatar]](/images/avatar/47faaa86a0f77d1d93bdc57e86cfd6c6.png)
Membro desde: 03/06/2007 13:44:07
Mensagens: 159
Localização: Pirassununga SP
Offline
|
Bem, cerca de 5 mil objetos de uma só vez acredito que seja desnecessário, tente paginar suas consultas, 30 por vez, por exemplo. O ganho de desempenho nesse caso é absurdo, sem contar na estabilidade, ou seja, por mais dados que sua tabela receba, na hora em que a query for executada ela permanecerá sempre com um tempo de resposta constante.
Se for necessário obter médias, somas e etc dentre esses 5000 objetos, utilize querys especificas do JPA/Hibernate para isso.
|
"Os que não querem raciocinar são fanáticos,
os que não sabem raciocinar são tolos e,
os que não ousam raciocinar são escravos "
Carlos Drummond de Andrade |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2009 15:46:58
|
androdana
Thread.start()
Membro desde: 26/05/2009 20:45:07
Mensagens: 47
Offline
|
Já paginei por 20 e melhorou o desempenho... porém durante a passagem de páginas apareceu o erro de Lazy inicialization do hibernate, apesar de eu ter colocado o filtro no web.xml para que nào aparecesse...
|
|
|
 |
|
|